簡體   English   中英

如何在Elasticsearch查詢中執行AND條件?

[英]How to perform AND condition in elasticsearch query?

我有以下查詢,我想在該查詢中查詢屬於范圍過濾器中指定日期范圍內的ID“ abc_12-def”的索引名。

但是以下查詢也正在獲取不同ID的值(例如abc_12-edf,abc_12-pgf等),並且這些值超出了日期范圍。 關於如何在此處給出AND條件的任何建議? 謝謝。

curl -XPOST 'localhost:9200/indexname/status/_search?pretty=1&size=1000000' -d '{
"query": {
"filtered" : {
  "filter": [ 
    { "term":  { "ID": "abc_12-def" }}, 
    { "range": { "Date": { "gte": "2015-10-01T09:12:11", "lte" : "2015-11-18T10:10:13" }}} 
  ]
  }
  }
  }'

您需要使用布爾查詢AND又名MUST調理

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "ID": "abc_12-def"
          }
        },
        {
          "range": {
            "Date": {
              "gte": "2015-10-01T09:12:11",
              "lte": "2015-11-18T10:10:13"
            }
          }
        }
      ]
    }
  }
}

另外,默認情況下,所有字段都使用標准分析器進行分析 ,這意味着abc_12-def被標記為[abc_12,def]。 term query不分析字符串。

如果您正在尋找完全匹配的內容,則應將該字段標記為not_analyzed 此處說明了如何將其映射為not_analyzed

暫無
暫無

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

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