![](/img/trans.png)
[英]Elasticsearch and Python Bool Query using Should and a List
[英]Elasticsearch 6.7.0 Nested “bool”, “should”,“must” queries
我正在使用ES_6.7并将Payload发送到其中。
当我为单个查询发送“Payload”但面对多个问题时,我得到了正确的输出。
单个查询的有效负载:PAYLOAD =
{
"query": {"bool": {"must": [{"match": {"coreid": {"query": "2"} } }, "match": {"program_id": {"query": "86328" }}}]}},
}
但是当我使用“should”选项复制上面三个输入的查询时,面对ERROR:
{"query":{"bool":{"should":
[{"must":[{"match": {"coreid": {"query": "2"} } },
{"match": {"program_id": {"query": "86328" }}}
]
},
{"must":[
{"match": {"coreid": {"query": "4"} } },
{"match": {"program_id": {"query": "86819" }}}
]
},
{"must":[
{"match": {"coreid": {"query": "5"} } },
{"match": {"program_id": {"query": "95142" }}}
]
}
]
}
}
}
错误信息:
“type”:“parsing_exception”,
“reason”:“没有[查询]注册[查询]”,
“行”:5,
“col”:22,
“地位”:400
有点晚了,但是:用“bool”封装“必须”,你也可以用“term”代替“match”和“query”。 不确定性能是否会更好,但在我看来它更清洁一点。
{
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"term": {
"coreid": "2"
}
},
{
"term": {
"program_id": "35"
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"coreid": "758"
}
},
{
"term": {
"program_id": "45678"
}
}
]
}
}
]
}
}
}
这对我有用。 我在每个级别添加了一个额外的“bool”条件。 我可以对此进行更多优化吗?
{
"_source" :["coreid", "program_id", "program_name", "university_name", "city", "country"] ,
"query":{"bool":
{
"should":
[
{"bool":{
"must":[
{"match": {"coreid": {"query": "2"} } },
{"match": {"program_id": {"query": "86328" }}}
]
}
},
{"bool":{
"must":[
{"match": {"coreid": {"query": "59"} } },
{"match": {"program_id": {"query": "95142" }}}
]
}
},
{"bool":{
"must":[
{"match": {"coreid": {"query": "2"} } },
{"match": {"program_id": {"query": "86819" }}}
]
}
}
],
"minimum_should_match" : 1
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.