如何编写涉及contains-all-of,contains-one-contains,contains-exact和not-contains操作的Elasticsearch查询?

问题描述 投票:-1回答:1

我有这样的文件:

{
'body': '',
'date': '',
}

我想获得具有以下条件的文档:

  • body包含所有:['a','b','c']
  • 并包含以下之一:['d','e','f']
  • 并包含这些短语:['g h i','j k l']
  • 并且不包含:['m','n']

如何创建此查询?

elasticsearch elasticsearch-5
1个回答
1
投票

你需要使用bool查询。重要的是要注意,对于“恰好包含这些短语”,它的工作原理取决于您应用于身体区域的分析器。

https://www.elastic.co/guide/en/elasticsearch/reference/5.6/query-dsl-bool-query.html

例如:

{
  "query": {
    "bool": {
      "must": [
        {"match": {"body": "a"}},
        {"match": {"body": "b"}},
        {"match": {"body": "c"}},
        {"match_phrase": {"body": "g h i"}},
        {"match_phrase": {"body": "j k l"}}
      ],
      "should": [
        {"match": {"body": "d"}},
        {"match": {"body": "e"}},
        {"match": {"body": "f"}}
      ],
      "must_not": [
        {"match": {"body": "m"}},
        {"match": {"body": "n"}}
      ]
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.