gpt4 book ai didi

elasticsearch - 如何使用过滤查询获取某些字段中包含特定单词的文档?

转载 作者:行者123 更新时间:2023-12-02 22:21:50 26 4
gpt4 key购买 nike

我想查找所有带有“农业”类别的书。书名或摘要字段中应包含单词“paddy”。
这是我的查询:

GET /books/_search
{
"query": {
"bool": {
"should": [
{
"match": {
"abstract": "paddy"
}
},
{
"match": {
"title": "paddy"
}
}
],
"filter": {
"term": {
"category": "Agriculture"
}
}
}
}
}

这些查询将返回所有“农业”类别的书籍,即使其中是否包含“稻田”一词也是如此。
我做错什么了?

最佳答案

首先让我向您解释如何,您的查询正在获取所有记录,甚至包含“paddy”一词。 这是b / c,您正在使用 should 子句,这仅表示子句(查询)应出现在匹配的文档中。 ,但这意味着并没有强制必须出现,因此它会获取索引中的所有文档,然后仅根据category对其进行过滤。

您需要的是上层必须子句,这意味着它必须出现,但随后我使用了嵌套的应该,因为它可以在标题抽象字段中,但是至少这些字段之一必须包含值,以便上层必须子句返回true。

下面是正确的查询,根据您的用例,我在本地尝试并正常运行:

{
"query": {
"bool": {
"must": {
"bool": {
"should": [
{
"match": {
"abstract": "paddy"
}
},
{
"match": {
"title": "paddy"
}
}
]
}
},
"filter": {
"term": {
"category": "agriculture"
}
}
}
}
}

让我知道您是否可以解决您的问题。

关于elasticsearch - 如何使用过滤查询获取某些字段中包含特定单词的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56715973/

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