Elasticsearch使字段成为数组

时间:2019-02-04 12:59:04

标签: elasticsearch

如何在elasticsearch中定义一个字段以始终返回数组。

我在elasticsearch中有一个字段关键字,有时有一个关键字

然后,Elasticsearch以字符串而不是列表的形式返回该字段,这会因为期望序列而不是字符串而破坏了反序列化器。

这是我定义关键字映射的方式:

"KEYWORDS": {
  "type": "text",
  "fields": {
    "keyword": {
      "type": "text"

    }
  }
},

2 个答案:

答案 0 :(得分:1)

在Elasticsearch中,没有专用的array类型。默认情况下,任何字段都可以包含0个或多个值。

这使得不可能强制Elasticsearch返回总是JSON数组。例如。如果您的文档只有1个值,则将成对返回-field: value

恐怕您应该在客户端进行此转换/执行

答案 1 :(得分:1)

索引文档时,应该处理您要实现的目标。由于数组没有这种特定的数据类型。所以例如如果您想拥有一个存储/返回整数数组的字段,那么您所需要的就是将字段定义为整数类型,并且在建立索引时始终确保该字段的值是一个数组,即使该值是单个数组也是如此。

所以

PUT test
{
  "mappings": {
    "_doc": {
      "properties": {
        "intArray": {
          "type": "integer"
        }
      }
    }
  }
}

PUT test/_doc/1
{
   "intArray": [10, 12, 50]
}

PUT test/_doc/1
{
   "intArray": [7]
}

其他任何数据类型也一样。