首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用不同的路由在不同的索引中索引同一张单据

如何用不同的路由在不同的索引中索引同一张单据
EN

Stack Overflow用户
提问于 2019-09-11 06:59:16
回答 1查看 165关注 0票数 0

我需要能够用不同的路由值在不同的索引中索引相同的文档。

基本上,要解决的问题是能够从支付者和收款者的角度计算关于支付信息的复杂聚合。例如,“最近15天内支付/接收的付款按状态分组”

我想知道我们如何使用ElasticSearch bulk api来实现这一点。

有没有可能在不产生冗余的情况下在ndjson中实现这一点?例如,类似于以下内容:

代码语言:javascript
运行
复制
POST _bulk
{ "index" : { "_index" : "test_1", "_id" : "1", "routing": "1234" } }
{ "index" : { "_index" : "test_2", "_id" : "1", "routing": "5678" } }
{ "field1" : "value1" }

我查找了文档,但没有找到解释这一点的地方。

EN

回答 1

Stack Overflow用户

发布于 2019-09-11 14:47:26

由于只使用bulk API,所以每次都需要重复文档。

另一种方法是将文档大容量索引到第一个索引中,然后使用Reindex API为每个文档创建具有不同路由值的第二个索引。

代码语言:javascript
运行
复制
POST _bulk
{ "index" : { "_index" : "test_1", "_id" : "1", "routing": "1234" } }
{ "field1" : "value1", "routing2": "5678" }

然后,您可以使用第二个路由值(需要以某种方式存储在文档中)重新索引到第二个索引中

代码语言:javascript
运行
复制
POST _reindex
{
  "source": {
    "index": "test_1"
  },
  "dest": {
    "index": "test_2"
  },
  "script": {
    "source": "ctx._routing = ctx._source.routing2",
    "lang": "painless"
  }
}

这样,您只需使用批量API对数据编制一次索引,这将花费的时间大约是将所有文档加倍时的一半时间,然后通过利用Reindex API,所有数据将在内部重新编制索引(即,不会增加发送潜在大有效负载的网络延迟)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57879148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档