Elasticsearch-如何正确处理布尔查询

时间:2019-02-25 11:59:49

标签: elasticsearch

我想利用elasticsearch搜索各种数据。我用数据建立了一个索引,现在我需要根据用户选择的过滤器来建立请求。

此刻,我只是被我的头炸死了,因为布尔查询似乎过于工程化,以至于我根本无法将其组合在一起...

我想结合使用动态数量的过滤器和可选的实际搜索查询。

所以我认为使用布尔查询是必经之路。

(通过阅读文档,我的理解是)(这就是我的“ dsl”的样子):

{
    "from": 0,
    "size": 10,
    "sort": [
        {"sortTitle": "asc"},
        "_score"
    ],
    "query": {
        "bool": {
            "filter": [
                {
                    "term": {
                        "someBoolFlag": true
                    }
                }
            ]
        }
    }
}

我想从那里开始,然后逐个过滤器实施过滤器。文本搜索将作为布尔过滤器的“必须”部分插入,因此从理论上讲,我最终会得到:

{
    "from": 0,
    "size": 10,
    "sort": [
        {"sortTitle": "asc"},
        "_score"
    ],
    "query": {
        "bool": {
            "must": {
                "query_string": {
                    "query": "*foo*",
                    "fields": [
                        "title^2",
                        "description^1.5",
                        "keywords"
                    ]
                }
            }
            "filter": [
                {
                    "term": {
                        "someBoolFlag": true
                    }
                },
                {
                    "terms": {
                        "someProperty": [
                            "someValue1",
                            "someValue2"
                        ]
                    }
                }
            ]
        }
    }
}

但是我在这里没有得到任何结果。。。我想我并不真正了解过滤和boolquery的工作原理,所以也许有人可以给我一个提示...

我真的很喜欢弹性,但是我不得不说-“查询dsl”是纯恐怖。

亲切的问候

0 个答案:

没有答案