在 ElasticSearch 中索引文档时如何重命名字段名称
How to rename field names while Indexing a document in ElasticSearch
我有一个 JSON 对象,其中的一些字段如下:-
{
"desc": "this is test description",
"name": "some random name",
}
在索引此文档时,我想更改字段名称,索引后我的文档应如下所示:-
{
"description": "this is test description",
"user_name": "some random name",
}
我读过有关 Ingest 管道处理器的信息,但它们仅在创建字段后才重命名。有什么方法可以在索引时更改字段名称?
执行此操作的方法是使用 Pipeline
。一般的想法是你定义管道并在你的集群上给它一个名字。然后您可以在索引数据时引用它,您发送的数据将通过该管道传递以对其进行转换。请注意,管道只会在标记为 "ingest" 个节点的节点上 运行。
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",
}
我有一个 JSON 对象,其中的一些字段如下:-
{
"desc": "this is test description",
"name": "some random name",
}
在索引此文档时,我想更改字段名称,索引后我的文档应如下所示:-
{
"description": "this is test description",
"user_name": "some random name",
}
我读过有关 Ingest 管道处理器的信息,但它们仅在创建字段后才重命名。有什么方法可以在索引时更改字段名称?
执行此操作的方法是使用 Pipeline
。一般的想法是你定义管道并在你的集群上给它一个名字。然后您可以在索引数据时引用它,您发送的数据将通过该管道传递以对其进行转换。请注意,管道只会在标记为 "ingest" 个节点的节点上 运行。
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",
}