elasticsearch Elastic从多个索引中获取数据,所有数据的优先级为1索引,用于更新数据

6xfqseft  于 2023-06-05  发布在  ElasticSearch
关注(0)|答案(1)|浏览(221)

我有两个弹性索引,分别是index1index2index2包含的条目中,index1中的某些行已通过单个字段更改复制。
我想在Elastic中从两个索引执行一个查询,并在一个结果中获得所有值(我可以运行多个查询并实现所需的。但由于数据量非常高,希望尽可能优化时间)。
a)与index1匹配(按ID、字段)的index2值将仅在结果上更新。
B)其余的index1数据将照常出现在结果中。
c)两个数据将在结果中以组合的形式出现。
简而言之,index2将对结果具有优先级。我尝试了很多Elastic的代码变体(scriptsourcenestedordering),但都无法实现所需的输出。
有谁能帮帮忙吗?多谢了。

2jcobegt

2jcobegt1#

使用field collapsing应该可以实现您所需要的功能,即通过折叠ID字段并利用inner_hitssort乘以_index

GET index1,index2/_search
{
  "query": {
    "terms": {
      "ID": ["12345", "23456", "34567"]
    }
  },
  "collapse": {
    "field": "ID",
    "inner_hits": {
      "name": "most_recent",                  
      "size": 5,                              
      "sort": [ { "_index": "desc" } ]
    }        
  }                
}

相关问题