【问题标题】:Is it possible to partition an ElasticSearch index?是否可以对 ElasticSearch 索引进行分区?
【发布时间】:2021-11-06 22:04:32
【问题描述】:

我有大量在磁盘上经常更改的源代码。源代码以“项目”块的形式组织(并且可能是最好的管理)。我想维护源代码的当前索引,以便可以搜索它们。不需要文件的历史版本。

为了避免删除/添加过程中的索引无限增长,我想以块(分区?)管理索引。摄取过程将在重新索引项目之前删除与项目相对应的块。在重新索引期间短暂缺少数据是可以容忍的。

当执行 I 查询时,我需要点击所有的块。索引的管理是我最关心的——性能不太重要。

我可以想象这可能有两种工作方式:

  • 对索引进行分区。删除一个分区,然后重建它。
  • 元索引。每个项目都将创建为一个单独的索引,但某种“元”结构将允许在单个操作中查询所有项目。

根据我的阅读,这似乎不是翻转索引的候选对象。

有超过 1000 个项目。在执行查询时指定项目列表是不切实际的。

是否可以对索引进行分区,以便我可以在命名块中管理(删除和重新索引)它,同时保持将其作为单个统一索引进行查询的能力?

【问题讨论】:

    标签: elasticsearch indexing


    【解决方案1】:

    是的,您可以使用aliases 实现此目的。

    假设您在索引“project-1”中有项目数据的“旧”版本,并且该索引还有一个别名“project”。 然后在索引“project-2”中索引项目数据的“新”版本。所有查询都是在别名“project”上完成的,而不是直接查询索引。

    因此,当您完成新版本数据的重新索引后,您只需将别名从“project-1”切换到“project-2”。您的查询不会中断服务。

    就是这样!

    POST _aliases
    {
      "actions": [
        {
          "add": {
            "index": "project-1",
            "alias": "project"
          }
        },
        {
          "remove": {
            "index": "project-2",
            "alias": "project"
          }
        }
      ]
    }
    

    【讨论】:

    • 这正是我想要的!我刚刚开始走多目标查询的道路,但这相当不方便且不太精确。这提供了出色的控制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多