首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >存储在字段中的数组上的分页-弹性搜索

存储在字段中的数组上的分页-弹性搜索
EN

Stack Overflow用户
提问于 2021-06-14 13:30:09
回答 1查看 38关注 0票数 0

我有一份格式如下的文件:

代码语言:javascript
运行
复制
{
  "email": "john.doe@gmail.com",
  "first_name": "John",
  "last_name": "Doe",
  "items": [
    {
      "id": 140,
      "description": ...,
    },
    {
      "id": 156",
      "description": ...,
    },
  ]
}

我试图使用滚动分页来获取"items“字段的分页列表,并尝试使用类似于以下查询的内容:

代码语言:javascript
运行
复制
http://localhost:9200/my_index/users/_search?scroll=1m

{   
  "size": 10,
  "query": {
      "ids": {
          "type": "users",
          "values": [
              "00000001"
          ]
      }
  },
  "_source": "items"
}

但是它是对用户进行分页,而不是对项进行分页,我不知道是否有一种方法可以对给定字段的元素进行分页,而不是文档本身的元素。

我正在使用Elasticsearch 2.3.5

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-15 10:08:41

在Elasticsearch中,您需要使用嵌套对象而不是对象数组。

对象数组不像预期的那样工作:不能独立于数组中的其他对象查询每个对象。如果您需要能够这样做,那么您应该使用嵌套数据类型而不是对象数据类型。

有关更多信息,请查看有关数组、这里和嵌套对象这里的弹性搜索官方文档。

在将映射更改为嵌套对象之后,您将能够进行如下查询:

查询

代码语言:javascript
运行
复制
GET my-index-000001/_search
{
  "query": {
    "nested": {
      "path": "items",
      "query": {
        "bool": {
          "must": [
            { "match": { "items.id": "ids" }}
          ]
        }
      }
    }
  }
}

另外,Es2.x非常老,在Elasticsearch中不再支持不同的类型,您可能也想更新您的Elasticsearch。

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

https://stackoverflow.com/questions/67971158

复制
相关文章

相似问题

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