我有一个索引,用这个模式填充数据:
{
"name" : "string",
"book": "string"
}
字符串
我正在使用ElasticSearch与Nest和C#。现在,由于业务需求,book字段必须是一个数组,我更新了我的查询模型C# POCO类,但当我运行我的查询时,我得到了这个错误:
预期值:“[”,实际值:“”test“”,偏移量:2248
现在我想更新我的schema以将book转换为数组类型。我尝试使用脚本和Map,但找不到好的解决方案?在ElasticSearch中有没有工作方法来执行此更改?
3条答案
按热度按时间wgmfuz8q1#
ES内置了通过查询https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html更新文档的功能。
如果上面的查询看起来像这样:
字符串
1dkrff032#
您不能更新或更改已创建的索引的Map(架构)中的字段类型。
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html#updating-field-mappings
如果需要更改类型,则应创建新索引并使用Reindex API。
yzuktlbb3#
为了补充纳扎尔的回答
依赖于Elasticsearch的官方文档,ES中没有专门的数组数据类型,所以你不需要改变Map,你只需要给那个字段给予一个数组值。
参考号:https://www.elastic.co/guide/en/elasticsearch/reference/current/array.html