elasticsearch - Elasticsearch 7.13 使用来自另一个索引的匹配字段值填充(丰富)索引
问题描述
我会按原样写我的问题;
您的集群下有两个索引;地震和震级类型
假设地震索引有一堆字段,“MagnitudeType”magnitude_type 索引有“MagnitudeType”和“MagnitudeTypeDesc”
你想创建一个名为 my_index 的新索引;my_index 应该包含所有来自地震的文档,我们将在 my_index 中添加“MagnitudeTypeDesc”字段,然后根据“MagnitudeType”字段匹配的magnitude_type索引填充它。
怎么能做到这一点?
谢谢
更新!!!!
我使用了 Val 的建议如下,
PUT /_enrich/policy/second-index-policy
{
"match": {
"indices": "magnitude_type",
"match_field": "MagnitudeType",
"enrich_fields": ["MagnitudeTypeDesc"]
}
}
PUT /_enrich/policy/second-index-policy/_execute
PUT /_ingest/pipeline/second_index_lookup
{
"processors" : [
{
"enrich" : {
"description": "Update data from the second index",
"policy_name": "second-index-policy",
"field" : "MagnitudeType",
"target_field": "MagnitudeType"
}
}
]
}
POST _reindex
{
"source": {
"index": "earthquakes"
},
"dest": {
"index": "new_index",
"pipeline": "second_index_lookup"
}
}
当我这样做时,id 将两个字段都写入 MagnitudeType。我的 _source 看起来像这样我做错了什么?
“_source”:{“MagnitudeType”:{“MagnitudeType”:“MW”,“MagnitudeTypeDesc”:“cok fena zelzele”},“名称”:“can”}
解决方案
通过模仿这个线程所提倡的,你做的一切都是正确的,即使用enrich
处理器将magnitude_type
索引中的数据连接到new_index
.
现在您只需要使用另一个名为的处理器rename
以及remove
来自丰富处理器的临时结果对象来展平匹配的幅度对象,如下所示:
PUT /_ingest/pipeline/second_index_lookup
{
"processors" : [
{
"enrich" : {
"description": "Update data from the second index",
"policy_name": "second-index-policy",
"field" : "MagnitudeType",
"target_field": "tmp"
}
},
{
"rename": {
"field": "tmp.MagnitudeType",
"target_field": "MagnitudeType"
}
},
{
"rename": {
"field": "tmp. MagnitudeTypeDesc",
"target_field": "MagnitudeTypeDesc"
}
},
{
"remove": {
"field": "tmp"
}
}
]
}
之后,您的源代码应如下所示:
{
"MagnitudeType" : "MW",
"MagnitudeTypeDesc" : "cok fena zelzele",
"name" : "can"
}
推荐阅读
- batch-file - 我想在 BatchScript ToGether 中运行两个命令
- r - 为什么带有“余弦”方法的 textstat_simil() 返回 NA
- unix - 在 Unix 中的子文件夹中使用 du -hs * 命令的差异
- asp.net-core - 将数据从自定义验证属性传递到页面/视图
- firebase - Flutter google授权响应类型OAuth 2
- c++ - 如何将 unique_ptr 传递给另一个类以仅使用指针的方法(不更改所有权)?
- c++ - c ++打印/读取文本文件-十六进制值和4个整数并读取它们并相应地分离数据
- python - 如何更有效地触发类内函数?
- python - graphql.error.located_error.GraphQLLocatedError:connection_resolver() 缺少 1 个必需的位置参数:“信息”
- c++ - 在 GUI 中集成 Boost.Asio