簡體   English   中英

彈性搜索范圍查詢

[英]Elastic search range query

考慮索引中的2個文檔,如下所示:

{
            "_index": "32",
            "_type": "places",
            "_id": "_FqlAzzSRN6Ge_294D5Mwg",
            "_score": 1,
            "_source": {
               "name_3": "xxxx",
               "id_3": "xxxxx",
               "name_2": "xxxx",
               "id_2": "xxx",
               "name_1": "xxx",
               "id_1": "xxx",
               "tempid": "xxxxx",
               "field1": 316.6666666666667,
               "type": "processeddata"
            }
         },
         {
            "_index": "32",
            "_type": "places",
            "_id": "3RCO-zHeSr2nWFZd8W-MDg",
            "_score": 1,
            "_source": {
               "name_3": "yyyy",
               "id_3": "yyy",
               "name_2": "yyy",
               "id_2": "yyy",
               "name_1": "yyyy",
               "id_1": "yyy",
               "tempid": "yy",
               "field2": 400.6666666666667,
               "type": "processeddata"
            }
         }

我想為以下場景構建一個查詢。 我必須在特定范圍內找到字段的文檔。

field1:200-400 field2:300-400所以上面的兩個文件應該來了。

我的查詢如下:

"query": {
    "bool": {
      "must": [
        {
          "range": {
            "field1": {
              "gte": 200,
              "lte": 400
            }
          },"range": {
            "field2": {
              "gte": 300,
              "lte": 400
            }
          }
        }
      ]
    }
  }

但是上面的查詢“在單個文檔中查找2個字段,因此沒有結果。所以我必須進行搜索,如果任何滿足文檔范圍的文件應該返回。請分享您的想法。提前致謝。

你需要使用bool should而不是bool must 這意味着匹配任何匹配至少一個條件的文檔。 注意:您的第二個條件與第二個文檔不匹配,因為400.66不在[300, 400]范圍內。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM