gpt4 book ai didi

elasticsearch - Elasticsearch -如何结合过滤和应条款?

转载 作者:行者123 更新时间:2023-12-03 01:34:21 26 4
gpt4 key购买 nike

我在 flex 搜索中有以下数据:

[
{
"firstName": "John",
"lastName": "Doe",
"id": 10
},
{
"firstName": "Mary",
"lastName": "Jane",
"id": 10
},
{
"firstName": "John",
"lastName": "Lennon",
"id": 12
}
]

我想编写一个 flex 搜索查询,该查询可以匹配firstName或lastName(应该),然后使用id过滤这些结果。

我写的当前查询如下:
{
"query": {
"bool": {
"filter": [{
"term": {
"id": 10
}
}],
"should": [{
"match": {
"firstName": "john"
}
}, {
"match": {
"lastName": "john"
}
}]
}
}
}

据我了解,当我执行上述查询时,我应该只获得firstName为“John”且id为10的记录。但是实际上,我会获得多条记录。

我在这里做错了什么?任何帮助,将不胜感激!

最佳答案

按照@Val更新我的答案,您只需要添加minimum_should_match子句,下面就是您要寻找的内容:

POST <your_index_name>/_search
{
"query": {
"bool" : {
"filter": {
"term" : { "id" : "10" }
},
"should" : [
{ "match" : { "firstName" : "john" } },
{ "match" : { "lastName" : "john" } }
],
"minimum_should_match": 1
}
}
}

让我知道是否有帮助!

关于elasticsearch - Elasticsearch -如何结合过滤和应条款?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53552593/

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