Elasticsearch通过公共字段合并两个索引的配置咨询
Elasticsearch通过公共字段合并两个索引的配置咨询
看起来你正在尝试配置Elasticsearch的 enrich 策略和摄入管道,通过公共字段将事件索引的数据关联到客户类文档中对吧?我帮你把配置整理并补充说明一下:
1. 创建Enrich策略
这个策略用来定义从源索引中提取哪些字段,以及通过哪个字段进行匹配关联:
PUT _enrich/policy/merge { "match": { "indices": "es.event-154.23-09-01-6-27-22", "match_field": "ancestor_id", "enrich_fields": ["status","status_id","type","sub_type","primary_assigned","vehicle_of_interest","dms_ro_number","dms_deal_number","primary_assigned_user_name","dealership_id", "ancestor_id","event_id","deleted","service_date","update_date","secondary_assigned_user_name","bdc_assigned_user_name"] } }
indices:指定用来提供关联数据的源事件索引match_field:设置匹配的公共字段,这里用源索引的ancestor_id和目标文档的字段做匹配enrich_fields:定义需要从源索引同步到目标文档的字段列表
注意:创建完策略后,需要执行以下命令加载数据到专属的enrich索引中,否则管道无法使用该策略:
PUT _enrich/policy/merge/_execute
2. 创建Ingest摄入管道
这个管道用来在文档写入时,自动通过enrich策略匹配并补充数据:
PUT _ingest/pipeline/enrich { "processors": [ { "enrich": { "description": "Add Events to customer", "policy_name": "merge", "field": "contact_id", "target_field": "events", "max_matches": 10 // 这里推测你原本想设置最大匹配条数,可根据实际需求调整 } } ] }
policy_name:关联上面创建的mergeenrich策略field:目标文档中用来和源索引match_field匹配的字段(这里是contact_id)target_field:匹配到的事件数据会被放到目标文档的这个字段下(这里是events)max_matches:可选参数,控制最多返回多少条匹配的源文档,默认是1,你可以根据业务需求调整
另外要注意:确保源索引的ancestor_id和目标文档的contact_id字段数据类型完全一致,否则会出现匹配失败的情况。
备注:内容来源于stack exchange,提问作者bala n
相关产品推荐
相关产品推荐

