2014-09-23 58 views
0

我是elatic搜索的新手,不幸的是elasticearch.com文檔不夠好。我知道如何使用術語:如何使用標準組合來構建彈性查詢?

{ 
    "term" : { "user" : "kimchy" } 
} 

您能否幫助我通過這些標準來構建我的查詢? (用戶= 「伊赫桑」 或用戶= 「afsaneh」)和((10和20之間的年齡)或40和50之間的(年齡))

回答

1

你應該看看:

  • bool查詢(documentation):它會幫助你在不同的指標分析與AND/OR/NO使用條款結合must/should/must_not
  • range過濾器(documentation):它的目標是要排除不值相匹配的文件你設定的間隔。

下面的查詢應該做的伎倆:

{ 
    "query": { 
    "filtered": { 
     "query": { 
     "bool": { 
      "should": [ 
      { 
       "term": { 
       "user": "ehsan" 
       } 
      }, 
      { 
       "term": { 
       "user": "afsaneh" 
       } 
      } 
      ] 
     }   
     }, 
     "filter": { 
     "or": { 
      "filters": [ 
      { 
       "range": { 
       "age": { 
        "from": 10, 
        "to": 20 
       } 
       } 
      }, 
      { 
       "range": { 
       "age": { 
        "from": 40, 
        "to": 50 
       } 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 

但是,恕我直言,在Elasticsearch文檔是相當不錯的。 爲了瞭解如何構建其他查詢,您應該花時間閱讀更多內容:像這樣(特別是關於difference between query and filters)。

編輯:

"terms": { 
    "user": [ 
    "ehsan", 
    "afsaneh" 
    ] 
} 
:兩個 term查詢可以通過一個單一的 terms像這樣被替換