Elasticsearch在具有特定值的文档中搜索字段

时间:2018-10-26 16:00:54

标签: elasticsearch elastic-stack

我有一个索引,其中包含5个字段的以下文档结构。我写了一个搜索查询,如下所示:

{
      "query": {
        "query_string": {
          "fields": [
            "field1.keyword",
            "field2.keyword",
            "field3.keyword"
          ],
          "query": "*abc*"
        }
      },
      "from": 0,
      "size": 1000
    }

这很好用,但是作为一项新要求,我只需要在field4具有给定值的一组假设(1,2,3)的文档中进行搜索,并忽略其余文档。 对于我来说,可以获得一个field4值的列表,这些值将被忽略,因为它们以跳过状态出现在db中。 请提出相同的解决方案。谢谢。

1 个答案:

答案 0 :(得分:0)

我建议在布尔查询中使用过滤器查询来匹配满足条件的文档。

 {
  "query": {
    "bool": {
      "must": {
        "query_string": {
          "fields": [
            "field1.keyword",
            "field2.keyword",
            "field3.keyword"
          ],
          "query": "*abc*"
        }
      },
      "filter": {
        "terms": {
          "field4.keyword": [1, 2, 3]
        }
      }
    }
  }
}