我有一个带有以下字段的JSON对象:-
{
"desc": "this is test description",
"name": "some random name",
}
在索引此文档时,我想更改字段名称,索引后的文档应如下所示:-
{
"description": "this is test description",
"user_name": "some random name",
}
我已经了解了Ingest管道处理器,但是它们仅在创建字段后才重命名。有什么方法可以在编制索引时更改字段名称?
答案 0 :(得分:2)
执行此操作的方法是使用Pipeline
。通常的想法是定义管道,并在集群上为其命名。然后,您可以在索引数据时引用它,并且您发送的数据将通过该管道传递以对其进行转换。注意管道只会在标记为“最大”节点的节点上运行。
https://www.elastic.co/guide/en/elasticsearch/reference/current/pipeline.html
要专门重命名,可以使用以下处理器: https://www.elastic.co/guide/en/elasticsearch/reference/current/rename-processor.html
我没有明确测试,但是代码如下:
使用以下名称定义集群上的管道:
PUT _ingest/pipeline/my-pipeline-name
{
"description" : "rename user name",
"processors" : [
{
"rename" : {
"field": "name",
"target_field": "user_name"
},
"rename" : {
"field": "field2",
"target_field": "newfield2"
}
}
]
}
使用管道加载文档:
POST /some_index/_doc/?pipeline=my-pipeline-name
{
"desc": "this is test description",
"name": "some random name",
}