当前位置: 首页 > 知识库问答 >
问题:

Elasticsearch为嵌套数组创建映射

宗政唯
2023-03-14

我必须使用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个答案

哈沛
2023-03-14

为此,需要使用嵌套映射。这将确保每个嵌套对象都独立于其他对象进行处理。见文件

无论如何,我认为不可能为匿名两级嵌套数组编制索引。您需要在嵌套级别中命名属性。

因此,在映射count、开始时间、结束时间、持续时间中假定属性的顺序将不起作用:

[  
   [  
      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
   }
]

 类似资料:
  • 我用下面的方法尝试了嵌套映射。 我在声明“root_cause”时出错:[{“type”:“mapper_parsing_exception”,“reason”:“root映射定义有不支持的参数:[type:nested]。” 感谢您的帮助。

  • 我有一个阵列列表多地图- 它显示为json,如下所示: 但我需要如何将其解析为:

  • 该示例摘自Elasticsearch参考:https://www.elastic.co/guide/en/Elasticsearch/reference/5.3/nested.html 我的索引和这个差不多。唯一的区别是user.first和user.last是关键字类型,所以我可以对它们使用过滤器。 在两种情况下,我应该使用什么查询来获取与上面数组匹配的文档(正好是两个项,一个项是John Sm

  • 问题内容: TL; DR -我该如何检查是否 之一的 和 所有的 嵌套数组满足规定的标准是什么? 我有一个。每个对象都有一个嵌套对象数组,这些对象本身都有一个嵌套对象列表。我需要对所有文档中 至少一个嵌套对象匹配的文档执行过滤器。当我说的比赛,我的意思是 所有 的嵌套对象的对象以某种方式相匹配。这是一个示例映射,以供参考; 如果文档没有/ 对象,则认为是匹配的。但是,更糟糕的是,内部对象需要考虑以

  • 我正在尝试创建弹性贴图 但我得到以下错误: [mapper_parsing_exception][agent_id]的映射定义有不受支持的参数:[field ddata: true]

  • 问题内容: 我试图映射对象数组,每个数组包含另一个嵌套的对象数组。但是,该映射不适用于嵌套数组。我如何在嵌套数组的内容上进行映射,同时使所有的父对象保持相同? 小提琴: https : //jsfiddle.net/69z2wepo/249197/ 数据结构如下: 地图看起来像 问题答案: 由于每个元素都有一个数组,因此您也必须结束。 例