elasticsearch bool查询必须与OR结合使用

elasticsearch bool查询必须与OR结合使用,第1张

elasticsearch bool查询必须与OR结合使用

我终于设法创建了一个查询,该查询完全可以实现我想要的功能:

过滤的嵌套布尔查询。我不确定为什么没有对此进行记录。也许有人可以告诉我?

这是查询:

GET /test/object/_search{  "from": 0,  "size": 20,  "sort": {    "_score": "desc"  },  "query": {    "filtered": {      "filter": {        "bool": {          "must": [ {   "term": {     "state": 1   } }          ]        }      },      "query": {        "bool": {          "should": [ {   "bool": {     "must": [       {         "match": {"name": "foo"         }       },       {         "match": {"name": "bar"         }       }     ],     "should": [       {         "match": {"has_image": {  "query": 1,  "boost": 100}         }       }     ]   } }, {   "bool": {     "must": [       {         "match": {"info": "foo"         }       },       {         "match": {"info": "bar"         }       }     ],     "should": [       {         "match": {"has_image": {  "query": 1,  "boost": 100}         }       }     ]   } }          ],          "minimum_should_match": 1        }      }        }  }}

在伪SQL中:

SELECt * FROM /test/objectWHERe     ((name=foo AND name=bar) OR (info=foo AND info=bar))AND state=1

请记住,它是如何在内部处理name = foo的,这取决于您的文档字段分析和映射。这可以从模糊行为到严格行为不等。

“ minimum_should_match”:1表示,应该至少一个should语句为真。

此语句意味着只要结果集中有一个包含has_image:1的文档,它就会增加100倍。这将更改结果的顺序。

"should": [  {    "match": {      "has_image": {        "query": 1,        "boost": 100      }    }   } ]

玩得开心:)



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4931503.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存