Elasticsearch 为嵌套数组创建映射
Posted
技术标签:
【中文标题】Elasticsearch 为嵌套数组创建映射【英文标题】:Elasticsearch create a mapping for nested array 【发布时间】:2016-07-05 02:51:00 【问题描述】:我必须使用 elasticsearch 和 python 为需要索引的 json 数据创建索引示例我有一个嵌套数组数组 [[39.909971141540645, 1452077285.150548, 1452077286.196072, 1.0455241203308105]] 我需要为这个数组定义一个映射,比如第一个字段是 count ,第二个字段是 start_time, end_time, duration 。请帮助如何声明嵌套数组的映射。
我已经声明了使用 python 和 elasticsearch 模块的映射
index_mapping=
"properties":
"speed_events":
"type":"object",
"properties":
"count":"type":"double",
"start_time":"type":"date",
"end_time":"type":"date",
"duration":"type":"double"
es.indices.put_mapping(index=index_name, doc_type=type_name, body=index_mapping)
[speed_events] 的抛出错误对象映射试图将字段 [null] 解析为对象,但找到了具体值') 需要帮助来解决这个问题
【问题讨论】:
【参考方案1】:您需要为此使用nested mapping。 这将确保每个嵌套对象都独立于其他对象进行处理。见documentation
无论如何,我认为不可能索引匿名的两级嵌套数组。 您需要在嵌套级别中命名属性。
因此,假设映射count, start_time, end_time, duration
中的属性顺序将不起作用:
[
[
1,
'1999-01-01',
'2000-01-01',
14.6
],
[
2,
'1999-01-01',
'2000-01-01',
16.6
]
]
但您应该改为生成如下内容:
[
'count':1,
'start_time':'1999-01-01',
'end_time':'2000-01-01',
'duration':14.6
,
'count':2,
'start_time':'1999-01-01',
'end_time':'2000-01-01',
'duration':16.6
]
【讨论】:
以上是关于Elasticsearch 为嵌套数组创建映射的主要内容,如果未能解决你的问题,请参考以下文章
我的弹性映射中有一个嵌套对象。我正在尝试为该嵌套对象创建过滤器查询
对映射的DynamoDb数据进行Elasticsearch嵌套查询不返回任何内容
如何将单个 .NET 类型映射到 ElasticSearch/NEST 中的多个嵌套对象类型?