elasticsearch - Elasticsearch:重新索引时设置字段类型? (可以单独使用_reindex完成)

标签 elasticsearch reindex elasticsearch-6

问题:是否可以使用Elasticsearch _reindex API设置/重置通过它复制的字段的“字段数据类型”?

这个问题来自查看Elastics文档以获取重新索引:https://www.elastic.co/guide/en/elasticsearch/reference/6.2/docs-reindex.html

这些文档显示_reindex API可以在复制内容时对其进行修改。他们以更改字段名称为例:

POST _reindex
{
  "source": {
    "index": "from-index"
  },
  "dest": {
    "index":"new-index"
  },
  "script": {
    "source": "ctx._source.New-field-name = ctx._source.remove(\"field-to-change-name-of\")"
  }
}
script子句将使“new-index”具有一个名为New-field-name的字段,而不是来自“from-index”的名称为field-to-change-name-of的字段。

该文档暗示“脚本”功能具有很大的灵活性,但是我不清楚这是否包括投影数据类型(例如,引用数据以将其转换为字符串/文本/关键字和/或处理事物)作为试图将字符串数据转换为非字符串的文字(显然是有危险的)

如果可以在_reindex中设置数据类型,则我不认为它会有效和/或没有(也许很苛刻)限制-我只是想更好地了解_reindex功能的限制(并弄清楚是否可以强制执行在一次交互中创建一个数据类型,而不是在执行reindex命令之前不设置映射没有新索引)

(PS。我碰巧正在使用Elasticsearch 6.2,但我认为我的问题适用于所有具有_reindex api的版本(听起来像2.3.0 and greater之类的东西))

最佳答案

也许您会混淆一些术语。您要指出的文档部分是指与文档关联的元数据,在这种情况下,_type meta字段仅告诉Elasticsearch特定文档属于特定类型(例如user类型),与数据类型无关字段的名称(例如integerboolean)。

如果要设置/重置特定字段的映射,则根据情况,甚至不需要使用脚本。您只需要使用新的映射创建目标索引并执行_reindex API。

但是,如果要更改不兼容值之间的映射(例如,将非数字字符串转换为具有“整数”数据类型的字段),则需要通过脚本或ingest node进行一些转换。

关于elasticsearch - Elasticsearch:重新索引时设置字段类型? (可以单独使用_reindex完成),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49247059/

相关文章:

node.js - 使用Node JS堆的Elasticsearch查询内存不足

search - 如何构建考虑单词之间的距离和单词精确度的 Elasticsearch 查询

ruby-on-rails - 在我的index.html.erb中为nil:NilClass获取未定义的方法 `each'

java - 通过java代码在elasticsearch中使用inguest-attachment插件索引pdf/word

elasticsearch - script_score查询不支持[源代码]

php - MAGENTO:如何在更新后重新索引数据?

elasticsearch - Elasticsearch将动态映射的位置数据重新索引为几何形状

php - 如何通过子 json 值删除 json 元素?

elasticsearch - 根映射定义具有嵌套在 Elasticsearch 中的不受支持的参数类型

elasticsearch - 根据数组 ElasticSearch 中的项目过滤文档