ElasticSearch-在搜索响应中仅获取具有所有顶级字段的匹配嵌套对象

杰伊·沙(Jay Shah)

假设我有以下文档:

{
    id: 1,
    name: "xyz",
    users: [
        {
            name: 'abc',
            surname: 'def'
        },
        {
            name: 'xyz',
            surname: 'wef'
        },
        {
            name: 'defg',
            surname: 'pqr'
        }
    ]
}

我只想在搜索响应中获取具有所有顶级字段的匹配嵌套对象。我的意思是,如果我搜索/过滤名称为“ abc”的用户,则需要以下响应

{
    id: 1,
    name: "xyz",
    users: [
        {
            name: 'abc',
            surname: 'def'
        }
    ]
}

我怎样才能做到这一点?

参考:在Elasticsearch中从数组中选择匹配的对象

如果您可以保留除嵌套字段之外的所有根字段,然后在嵌套字段中仅包含匹配的内部匹配,那么我们可以通过指定稍微复杂一些的源过滤参数来重用前面的答案:

{
  "_source": {
    "includes": [ "*" ],
    "excludes": [ "users" ]
  },
  "query": {
    "nested": {
      "path": "users",
      "inner_hits": {        <---- this is where the magic happens
        "_source": [
          "name", "surname"
        ]
      },
      "query": {
        "bool": {
          "must": [
            {
              "term": {
                "users.name": "abc"
              }
            }
          ]
        }
      }
    }
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在ElasticSearch上搜索具有空数组字段的文档

ElasticSearch NEST搜索多种类型和所有字段

elasticsearch匹配搜索查询中来自文档的所有单词

在ElasticSearch中聚合仅匹配的嵌套对象值

Elasticsearch从所有文档中获取字段的值

Elasticsearch:嵌套对象中的remove / update字段

检索数组中具有匹配属性的对象-Elasticsearch

在Elasticsearch中搜索字段

Elasticsearch:在字段中获取具有特定值的文档

如何在ElasticSearch中仅选择子对象的匹配字段?

ElasticSearch | 如何搜索嵌套对象?

如何在Elasticsearch中按具有完全匹配项的字段搜索查询

ElasticSearch中键中所有嵌套对象的聚合

在ElasticSearch中对嵌套对象进行通配符搜索

在Elasticsearch中查询具有嵌套对象的字段

如何在字段中查找所有具有特定字符串的文档?(Elasticsearch)

Elasticsearch获取嵌套字段

在嵌套的 elasticsearch 对象中的所有键中搜索值

Elasticsearch:每月获得顶级嵌套文档,没有顶级重复

ElasticSearch - 如何获取文档的所有字段?

仅搜索混合字段中的数字 (elasticsearch)

使 elasticsearch 返回具有所有字段的对象

在elasticsearch中具有匹配查询的嵌套布尔值

如何使用 elasticsearch 获取嵌套字段的所有值?

搜索表中的所有列并仅显示在elasticsearch中匹配关键字的那些列

Elasticsearch:多个关键字未搜索所有字段

如何使用elasticsearch在匹配的所有字段中搜索查询

如何匹配 Elasticsearch 中对象数组中的所有对象?

Elasticsearch - 匹配所有数组列表字段