如何在elasticsearch中将字段类型从字符串更新为字符串数组?

问题描述 投票:0回答:3

我有一个由具有此模式的数据填充的索引:

{
    "name" : "string",
    "book": "string"
}

我正在使用带有 Nest 和 C# 的 ElasticSearch。 现在,由于业务要求 book 字段必须是一个数组,我更新了我的查询模型 C# POCO 类,但是当我运行查询时,我收到此错误:

预期:'[',实际:'“测试”',偏移量:2248

现在我想更新我的架构以将书转换为数组类型。我尝试使用脚本和映射但找不到好的解决方案?有没有任何工作方法可以在 ElasticSearch 中执行此更改?

c# elasticsearch nest
3个回答
1
投票

ES 内置了通过查询更新文档的功能 https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html.

如果上面的查询如下所示:

POST my-index-000001/_update_by_query
{
  "script": {
    "source": " ctx._source.book = [ctx._source.book] ",
    "lang": "painless"
  },
  "query": {
    "match_all":{}
  }
}

0
投票

您无法更新或更改已创建索引的映射(架构)中的字段类型。

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html#updating-field-mappings

如果您需要更改类型,您应该创建新索引并使用 Reindex API。


0
投票

补充纳扎尔的答案

根据Elasticsearch的官方文档,ES中没有专用的数组数据类型,因此您不需要更改映射,只需为该字段赋予一个数组值即可。

这是参考: https://www.elastic.co/guide/en/elasticsearch/reference/current/array.html

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.