在ElasticSearch中为文档建立索引时如何重命名字段名称

时间:2019-10-17 14:31:12

标签: elasticsearch elasticsearch-indices

我有一个带有以下字段的JSON对象:-

{
    "desc": "this is test description",
    "name": "some random name",
}

在索引此文档时,我想更改字段名称,索引后的文档应如下所示:-

{
    "description": "this is test description",
    "user_name": "some random name",
}

我已经了解了Ingest管道处理器,但是它们仅在创建字段后才重命名。有什么方法可以在编制索引时更改字段名称?

1 个答案:

答案 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",
}