我面临一个问题:
RequestError(400,'illegal_argument_exception','mapper 不同类型的[columns.analysis.abstract_stats.description.std], current_type [text],merged_type [float]')
这导致我寻求一种描述为here的解决方案。
当前产生上述错误的代码是:
from test_mapping import a
es = Elasticsearch([{'host': 'A.B.C.D', 'port': 9200}])
try:
es.index(index='datatables', doc_type='datatable_v1', id="pallet_d3dd6729b810bebd955708e85afc1f65c3f2685c", body=a)
except Exception as e:
print (e)
该索引以前已经存在,但是我已将其删除,然后运行上面的代码仍会生成上述错误。变量a
是here
答案 0 :(得分:1)
发生上述错误的原因是,当您将数据发送到Elastic时,它为映射中发现的键创建了动态字段,并尝试标识其类型。根据您在body
中发送的数据,columns.analysis.abstract_stats.description.std
的值被映射为float
类型,但是键columns.analysis.abstract_stats.description.std
上的记录之一的值为'NaN'
无法映射到float字段,因此会出现错误。您需要确保字段类型不会从一条记录更改为另一条记录。
答案 1 :(得分:1)
使用它来加载:
for (j = 1; j < selElmnt.length; j++) {
这应该可以解决您的问题。现在,您的应用程序将将此值读取为None(这可能是此损坏的根源),您可以轻松实现功能