怎样解决Elasticsearch type 不一致导致写入数据失败的问题
当我们在使用elasticsearch时,有时会遇到type不一致导致写入数据失败的问题。这是由于elasticsearch的type在6.0版本之后已经被废弃了,所以我们在使用elasticsearch时,需要注意type的一致性。
解决方法:
首先,我们需要在elasticsearch的配置文件中添加type.allocation.require_name=true,这样就可以在创建索引时指定type。
然后,我们可以使用elasticsearch的update by query api来更新已有的数据。
例如,我们可以使用以下命令来更新type为foo的索引中的type为bar的数据:
POST /_update_by_query?conflicts=proceed { "script": { "source": "ctx._type = 'foo'" }, "query": { "term": { "_type": "bar" } } }
最后,我们需要使用elasticsearch的reindex api来重建索引。
例如,我们可以使用以下命令来重建type为foo的索引:
POST _reindex { "source": { "index": "foo" }, "dest": { "index": "bar" } }
这样就可以解决type不一致导致写入数据失败的问题了。
相关文章