问题:是否可以使用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
类型),与数据类型无关字段的名称(例如integer
或boolean
)。
如果要设置/重置特定字段的映射,则根据情况,甚至不需要使用脚本。您只需要使用新的映射创建目标索引并执行_reindex
API。
但是,如果要更改不兼容值之间的映射(例如,将非数字字符串转换为具有“整数”数据类型的字段),则需要通过脚本或ingest node进行一些转换。
关于elasticsearch - Elasticsearch:重新索引时设置字段类型? (可以单独使用_reindex完成),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49247059/