首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹性查询结合应(布尔OR)与嵌套文档检索

弹性查询结合应(布尔OR)与嵌套文档检索
EN

Stack Overflow用户
提问于 2022-05-10 06:55:05
回答 1查看 71关注 0票数 0

我有一个包含嵌套文档的弹性索引。我试图通过ids及其嵌套文档检索多个文档。使用应该查询来检索文档本身非常简单,但是我将在何处以及如何将嵌套的文档查询包含在其中呢?

布尔“应该”查询:

代码语言:javascript
复制
GET myIndex/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "id": "123"
          }
        },
        {
          "term": {
            "id": "456"
          }
        },
        {
          "term": {
            "id": "789"
          }
        }
      ]
    }
  }
}

检索嵌套文档的查询:

代码语言:javascript
复制
"nested": {
   "path": "myNestedDocs",
            "query": {
              "match_all": {}
}

不可能将嵌套查询添加到每个术语查询中,因为这会给出一个解析异常:“术语格式错误的查询,预期的END_OBJECT,但找到了FIELD_NAME”。

另外,不可能在与术语查询相同的级别上添加嵌套的文档查询,因为这样它就会被看作是另一个OR子句,并且只是从索引中检索所有文档。

有什么想法吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-10 08:03:23

根据我的理解,您希望匹配列表和检索嵌套文档中的任何一个id。如果我的理解正确,那么您需要将这两个查询组合到must子句,如下所示:

代码语言:javascript
复制
{
  "query": {
    "bool": {
      "must": [
        {
          "terms": {
            "id": [
              "123",
              "456",
              "789"
            ]
          }
        },
        {
          "nested": {
            "path": "myNestedDocs",
            "query": {
              "match_all": {}
            }
          }
        }
      ]
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72181856

复制
相关文章

相似问题

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