0

我已阅读 Elasticsearch 文档。我也上了一门课。我的问题是如何编写一个查询来处理我的所有任务?我以身作则。该文档没有很多示例。我写了我认为可能是我完成这项任务的方式,但我不确定我是否正确地做到了这一点。

... 是我放置某种匹配查询的地方

{
    "query": { 
        "bool": {
            "should": [
                {
                    "bool": {
                        "must": {
                            ...
                        },
                        "should": {
                            ...
                        }
                    }
                },
                {
                    "bool": {
                        "query_string": {
                            ...
                        }
                    }
                },
                {
                    "bool": {
                        ...
                    }
                },
                {
                "bool": {
                    "must": {
                        ...
                    },
                    "should": {
                        ...
                    }
                }
                }
            ],
            "minimum_should_match": 1
        }
    }
}

我会这样做吗?

4

1 回答 1

0

bool 查询包含 [must, filter, should, mustnot] 数组,因此您不必在其上放置另一个 bool。当然,在它们中的每一个中,您都可以编写另一个 bool 查询。

当您添加 minimum_should_match 时,您是对的,您必须将它放在应该部分之后。您的查询必须如下所示:

{
    "query": { 
        "bool": {
             "should": [
                { "query_string" : ... },
                { "terms" : ... },
                { "bool" : ... },
                { "bool" : {
                        "must": [
                            {"query_string": ... },
                            {"bool": ....}
                        ]
                    }
                }
             ],
             "minimum_should_match": 1
        }
    }
}

你在这里有一个很好的例子: https ://www.compose.com/articles/elasticsearch-query-time-strategies-and-techniques-for-relevance-part-i/

https://hdmetor.github.io/how-to-combine-queries-in-es/

于 2019-10-30T09:15:43.277 回答