我的编码如下:

{
"query": {
  "bool": {
     "must": [
        {
           "multi_match": {
              "query": [
                 "5347"
              ],
              "fields": [
                 "stkno",
                 "tag",
                 "content",
                 "htext"
              ],
              "operator": "or"
           }
        }
     ]
  }
 },
 "size": 500,
 "sort": [
  {
     "CDate": {
        "order": "desc"
      }
    }
  ]
}

如果必须和运营商结合在一起,那意味着什么?如果使用must和operator是or,Elasticsearch将在有条件的情况下运行。

谢谢

最佳答案

Must类似于多个查询之间的And
举个例子:

  "query": {
    "bool": {
        "must": [
           {  // Query 1},
           { // Query 2}
        ]
     }
   }

如果Query1 Query2均返回结果,则上述查询将返回结果。关于must here的研究

而上述查询中的operator 适用于multi_match查询。

举个例子:
    "multi_match": {
              "query": [
                 "text1 text2"
              ],
              "fields": [
                 "field1",
                 "field2"
              ],
              "operator": "or"
           }

此处运算符将在text1查询中提到的text2multimatch之间工作。这意味着,如果field1field2字段中的任何一个包含text1 text2,则将返回文档。关于operator here的研究

现在,如果我们考虑上面给出的示例。由于must子句中只有一个查询,因此您将看不到行为。

并且multimatch查询中只有文本“5347”,您将无法看到多重匹配查询的行为

希望这可以澄清您的疑问。

关于elasticsearch - 含义必须和运算符结合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43929508/

10-11 07:48