7

我需要从脚本访问存储在数组中的文档值。数组中项目的顺序很重要。

使用 doc['...'] 检索数组会混淆顺序:-(

假设一个像这样的简单文档

{
    "ar":[5,4,3,2,1]
}

使用此查询检索:

{
  "query":{
    "match_all":{}
  },
  "script_fields": {
    "values": {
      "script": {
        "inline":"return doc['ar']"
      }
    }
  }
}

将以反向(排序)顺序返回数组:[1,2,3,4,5] 有没有办法防止这种行为?

我不能求助于使用 _source,因为我需要在不支持 _source 的“has_child”查询中使用它。

有任何想法吗?

4

1 回答 1

3

需要知道 Elasticsearch 如何索引一个数组字段。

类似的问题

为了使字段可搜索,数组字段将按顺序索引,并且您无法获取脚本中的第一个值,例如doc['ar'][0]

如果你想要有顺序的原始数组,你可以用_source得到它params._source['ar'],结果会是[5,4,3,2,1],但比使用慢doc

于 2017-09-27T08:54:52.920 回答