gpt4 book ai didi

elasticsearch - 必须匹配多个值

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

当我需要文档的属性时,我有一个查询可以正常工作只匹配一个值。

但是,我还需要能够使用具有两个值的 must 进行搜索。

因此,如果香蕉的 ID 为 1,柠檬的 ID 为 2,我搜索黄色如果我在 must 子句中有 1 和 2,我会得到两者。但如果我只有 1 个,我只会得到香蕉。

{
"from": 0,
"size": 20,
"query": {
"bool": {
"should": [
{ "match":
{ "fruit.color": "yellow" }}
],
"must" : [
{ "match": { "fruit.id" : "1" } }
]
}
}
}

我还没有找到一种方法来使用 must 搜索两个值。这可能吗?

最佳答案

如果仅当 id 为 1 或 2 时才“必须”返回文档,这听起来像是另一个 should 子句。如果我正确理解了您的问题,您需要 id 为 1 或 id 2 的文档。此外,如果颜色为黄色,则给它更高的分数。

以下是您可以实现目标的一种方法:

{
"query": {
"bool": {
"should": {
"match": {
"fruit.color": "yellow"
}
},
"must": {
"bool": {
"should": [
{
"match": {
"fruit.id": "1"
}
},
{
"match": {
"fruit.id": "2"
}
}
]
}
}
}
}
}

在这里,我将两个 match 查询放在一个单独的 bool 查询的 should 子句中。这实现了您正在寻找的 OR 行为。

再看看 Bool Query documentation并注意 should 的细微差别。默认情况下,它的行为会有所不同,具体取决于是否有同级 must 子句以及是否在 filter context 中执行 bool 查询。

另一个可以调整并可以帮助您实现预期结果的关键选项是 minimum_should_match 参数。 Have a look at this documentation page .

关于elasticsearch - 必须匹配多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35583781/

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