elasticsearch 问题:配置单元对嵌套字段(JSON字符串)和其他字符串字段的ES的支持
衷心感谢您为我解决以下问题提供的帮助 问题: 配置单元对嵌套字段(JSON字符串)和其他字段的ES的支持。 如何表示配置单元中结构初始未知的嵌套字段 我正在使用elasticsearch配置单元桥在ES中插入数据(jar版本elasticsearch-hadoop-hive-2.1.2-2.1.2.jar) 索引数据有许多字段,其中一个字段是JSON字符串。 需要将此字段(JSON字符串)作为嵌套字段索引,将其他字段作为字符串字段索引。 因此,我们可以使用ES功能搜索和过滤嵌套的JSON文档 另一个挑战是这个JSON字段是动态的。它可以为每一行添加新的键和值。字段的名称不是固定的) ES应该有字段(attr、field1、field2) 其中attr应该是一个嵌套字段(json文档),可以有动态键和值 配置单元表中的示例值
elasticsearch 问题:配置单元对嵌套字段(JSON字符串)和其他字符串字段的ES的支持,
elasticsearch,mapreduce,hive,nested,
elasticsearch,Mapreduce,Hive,Nested,衷心感谢您为我解决以下问题提供的帮助 问题: 配置单元对嵌套字段(JSON字符串)和其他字段的ES的支持。 如何表示配置单元中结构初始未知的嵌套字段 我正在使用elasticsearch配置单元桥在ES中插入数据(jar版本elasticsearch-hadoop-hive-2.1.2-2.1.2.jar) 索引数据有许多字段,其中一个字段是JSON字符串。 需要将此字段(JSON字符串)作为嵌套字段索引,将其他字段作为字符串字段索引。 因此,我们可以使用ES功能搜索和过滤嵌套的JSON文档 另
select attr,field1,field2 from table;
row1 {"A":"GF","M":"vf"},"field1VAL","field2VAL"
row2 {"F":"BD"},"field1VAL","field2VAL"
row3 {"A":"BD","H":"ki","R":"we","M":"mg"},"field1VAL","field2VAL"
在ES文档中,指定当输出表只有一个字段时,可以将ES.input.json参数指定为true。
但在我的例子中,还有其他字段也存在于配置单元表中,并且必须转到ES索引。
(只有一个字段(attr)必须作为嵌套的JSON rest是字符串字段插入)
当我们使用curl命令定义映射和插入记录时,一切都很好。
但是通过配置单元插入失败,因为JSON字符串字段的映射定义为“嵌套”
在配置单元端它被定义为字符串。我需要使用struct吗?如何在配置单元端定义struct(创建映射时JSON的结构未知)
我们如何管理它,因为它可以是动态的,如上所述,并且在创建映射时字段名是未知的
步骤1>使用映射创建索引
crul命令用于首先创建索引映射,然后将下面的配置单元表映射到索引和
insert命令将数据插入配置单元ES表
"mappings": {
"index_type": {
"dynamic_templates": [{
"string_templates": {
"mapping": {
"index": not_ananlyzed","type":"string"},path_match": "attr.*"
}
}],
"properties": {
"attr": {
"type": "nested"
},
"field1": {
"type": "string",
"index": "not_analyzed"
},
"field2": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
步骤2>定义指向已创建索引的配置单元表
蜂巢
步骤3>将数据插入到指向已创建索引的配置单元表中
插入覆盖表ES_table从主_table中选择*
因为映射说“attr”是嵌套的,并且在配置单元ES表中,我有字符串,所以我得到了错误
错误
关闭操作时发生配置单元运行时错误:发现无法恢复的错误
MapperParsingException:[index_type]的对象映射试图将字段[attr]解析为对象,
**但得到了EOF,有没有给它提供具体的价值?纾困**
原因:org.elasticsearch.hadoop.rest.eshadopopinvalidRequest:发现无法恢复的错误
问题
1) 是否有任何方法可以索引json字符串字段可以作为嵌套字段加载的所有3个字段
通过蜂箱?
2) 如果没有,是否可以使用hive?是否可以使用Mapreduce?
create table ES_TABLE (attr string ,field1 string,field2 string) row format delimited
stored by 'org.elasticsearch.hadoop.hive.EsStorageHandler'
TBLPROPERTIES('es.mapping.names'='attr:attr,field1:field1,field2:field2',
'es.index.auto.creation'='false',
'es.resource'..'es.nodes'..'es.port'..)