繁体   English   中英

Elasticsearch 6.7.0嵌套“bool”,“should”,“must”查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM