【问题标题】:ElasticSearch: Specify which shard to store data onElasticSearch:指定存储数据的分片
【发布时间】:2015-09-17 15:39:16
【问题描述】:

我想根据某些字段值将我的数据存储在不同的分片上。例如,地理分片是我正在寻找的东西。我所有带有大陆值'NA'的记录都应该去shard-1,北美; 'EU' 应该去 shard-2, Europe 等等。

有没有办法可以指定记录(文档)应该去哪个分片?

试图找到这个,但作为回报,我只得到与碎片相关的文献。任何有关这方面的信息都会有所帮助!

【问题讨论】:

    标签: geolocation sharding elasticsearch


    【解决方案1】:

    您可以使用routing 参数影响数据重新分区。在您的情况下,使用大洲名称作为路由键将按同一分片上的特定大洲对文档进行分组。但是,您将无法直接选择存储文档的分片。

    这是关于它的definitive guide section,以及关于routingindex API documentation

    请注意,这可能会导致某些分片/节点比其他分片/节点使用得更多。

    【讨论】:

    • 感谢您的指点。有没有办法可以使用 LogStash 指定路由?我正在寻找它,但没有得到准确的答案
    • 看看elasticsearch-output-plugindocumentation,支持routing参数
    • 太棒了!它有效.. 发布我的 Logstash 配置文件以防它对某人有帮助:输入 {stdin{}} 过滤器 { csv { 分隔符 => ","列 => ["ID","Continent"] } } 输出 { elasticsearch { protocol => "http" routing => "%{Continent}" } stdout {} } 我检查了 /_status;我在文件中看到了明显的区别。带有 Continent NA 的文档进入 Shard-3,带有 EU 的文档进入 Shard-1。解决目的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    相关资源
    最近更新 更多