首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过筛选查询获取某些字段中包含特定单词的文档?

如何通过筛选查询获取某些字段中包含特定单词的文档?
EN

Stack Overflow用户
提问于 2019-06-22 13:44:59
回答 1查看 56关注 0票数 2

我想找到所有“农业”类的书。书中应在标题或摘要栏中包含“稻谷”一词。以下是我的疑问:

代码语言:javascript
复制
GET /books/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "abstract": "paddy"
          }
        },
        {
          "match": {
            "title": "paddy"
          }
        }
      ],
      "filter": {
        "term": {
          "category": "Agriculture"
        }
      }
    }
  }
}

这些查询返回所有带有“农业”类别的书籍,即使它包含单词“稻谷”或不包含。我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-22 14:42:25

让我先向您解释一下,您的查询是如何获取所有记录的,,甚至它包含单词“稻谷”与否。--这是b/c --您使用的是应该子句,它简单地意味着子句(查询)应该出现在匹配的文档中。,但它并不意味着它必须显示,因此它正在获取索引中的所有文档,然后根据category对其进行过滤。

您需要的是一个较高级别的必须子句,这意味着它必须出现,但是我使用了嵌套的 so ,因为它可以在标题抽象字段中使用,但是这些字段中至少有一个必须包含该值,因此上层必须e 217子句返回true。

下面是正确的查询,根据您的用例,我在本地尝试了这个查询,并且运行得很好:

代码语言:javascript
复制
{
    "query": {
        "bool": {
            "must": {
                "bool": {
                    "should": [
                        {
                            "match": {
                                "abstract": "paddy"
                            }
                        },
                        {
                            "match": {
                                "title": "paddy"
                            }
                        }
                    ]
                }
            },
            "filter": {
                "term": {
                    "category": "agriculture"
                }
            }
        }
    }
}

如果你清楚并解决了你的问题,请告诉我。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56715973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档