我正在尝试创建一个elasticsearch查询,该查询必须匹配单独字段上的三个查询之一,并且还有一个不需要匹配的额外查询.执行bool查询和MUST子句的问题是它必须匹配所有3,并且应该尽可能匹配所需的,除非使用minimum_should_match设置为2.在这种情况下,它与文档不匹配因为最小匹配,所以匹配3个必需的中的一个.
我当前的查询是这样的(抱歉,这里没有代码)
query
- bool
- must
- query 1
- query 2
- query 3
- should
- query 4
我也尝试了以下内容,但它不会使第4个查询可选
query
- bool
- should
- query 1
- query 2
- query 3
- query 4
- minimum_should_match: 2
如何进行并创建一个必须匹配三个查询之一的查询,并可选择将第四个查询中的查询排名更高.
Ian*_*bes 17
嵌套bool查询应该可以获得您正在寻找的结果.我们需要匹配查询一,二或三,同时可选地匹配查询4.
"query": {
"bool": {
"must": [
{
"bool": {
"should": [
{
//query1
},
{
//query2
},
{
//query3
}
],
"minimum_number_should_match": 1
}
}
],
"should": [
{
//query4
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
查询必须至少匹配查询1到3的should子句中的一个,并且可选地应匹配查询4.
同时匹配查询1,2,3和4的文档将排名最高,因为我认为您不是指排他性或.
| 归档时间: |
|
| 查看次数: |
7125 次 |
| 最近记录: |