如何在elasticsearch中定义一个字段以始终返回数组。
我在elasticsearch中有一个字段关键字,有时有一个关键字
然后,Elasticsearch以字符串而不是列表的形式返回该字段,这会因为期望序列而不是字符串而破坏了反序列化器。
这是我定义关键字映射的方式:
"KEYWORDS": {
"type": "text",
"fields": {
"keyword": {
"type": "text"
}
}
},
答案 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]
}
其他任何数据类型也一样。