gpt4 book ai didi

Elasticsearch 多词过滤器

转载 作者:行者123 更新时间:2023-11-29 02:43:05 25 4
gpt4 key购买 nike

我是 Elasticsearch 的新手,所以这是我的问题。我想使用 elasticsearch 进行搜索查询并使用多个术语进行过滤。

如果我想搜索用户“tom”,那么我希望找到用户“isActive = 1”、“isPrivate = 0”和“isOwner = 1”的所有匹配项。

这是我的搜索查询

"query":{
"filtered": {
"query": {
"query_string": {
"query":"*tom*",
"default_operator": "OR",
"fields": ["username"]
}
},
"filter": {
"term": {
"isActive": "1",
"isPrivate": "0",
"isOwner": "1"
}
}
}
}

当我使用 2 个术语时,它就像一个魅力,但当我使用 3 个术语时,它就没有了。

感谢您的帮助!

最佳答案

你应该使用bool filterAND你所有的条件:

"query":{
"filtered": {
"query": {
"query_string": {
"query":"*tom*",
"default_operator": "OR",
"fields": ["username"]
}
},
"filter": {
"bool" : {
"must" : [
{"term" : { "isActive" : "1" } },
{"term" : { "isPrivate" : "0" } },
{"term" : { "isOwner" : "1" } }
]
}
}
}
}

对于版本 2.x+,您可以使用 bool 查询代替 filtered 查询,并进行一些简单的替换:https://www.elastic.co/guide/en/elasticsearch/reference/7.4/query-dsl-filtered-query.html

关于Elasticsearch 多词过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21202775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com