【问题标题】:Is it possible to write to multiple indexes with an ElasticSearch alias?是否可以使用 ElasticSearch 别名写入多个索引?
【发布时间】:2013-11-08 19:41:40
【问题描述】:

ElasticSearch Docs 内容如下:

别名也可以映射到多个索引,指定时别名会自动扩展为别名索引。

但是当我尝试将别名添加到 2 个索引并写入两个索引时,似乎都没有更新文档。如果我删除其中一个别名,它将正确写入仍然存在的别名。

多个写入别名失败:

$ curl -XGET 'http://localhost:9200/_aliases'

结果:

{
  "dev_01": {
    "aliases": {
      "dev_read": {},
      "dev_write": {}
    }
  },
  "dev": {
    "aliases": {
      "dev_write": {}
    }
  }
}

使用单个别名:

$ curl -XGET 'http://localhost:9200/_aliases'

结果:

{
  "dev_01": {
    "aliases": {
      "dev_read": {},
      "dev_write": {}
    }
  },
  "dev": {
    "aliases": {}
  }
}

elasticsearch 是否支持写入多个索引?如果指向多个索引,别名是否为只读?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    答案是否定的

    所以看来我应该更深入地对这个哔哔声进行分类,但我的客户从 es 得到的响应是:

    ElasticSearchIllegalArgumentException[Alias [dev_write] 有多个与之关联的索引 [[dev_01, dev]],无法执行单个索引操作

    只是希望the docs 在前面更明确一点,因为他们让我有点困惑

    起初似乎暗示你可以:

    索引别名 API 允许使用名称为索引设置别名,all API 会自动将别名转换为实际的索引名称。一个别名也可以映射到多个索引...

    将别名与多个索引相关联只是几个添加操作...

    页面下方让您知道您不能:

    对指向多个索引的别名进行索引是错误的。

    【讨论】:

    • 正确,答案的原因是:如果别名指向多个索引,elasticsearch 如何知道哪个索引应该保存该新文档?索引是一个单一的索引操作,就像任何写操作一样,因此它需要在特定的索引上执行。
    • @javanna:我宁愿说:因为它没有实现。我可以想出几种方法来指定写信的地点和方式。
    • @soulmerge 确定可以通过指定写入位置来实现,但这会降低使用别名的用处。不支持是有原因的。如果您有更好的想法,尽管我们非常欢迎您提供反馈!
    • @soulmerge 我们可以公开讨论这个问题,只需在github.com/elasticsearch/elasticsearch/issues 上打开一个问题或向我们的邮件列表发送消息。
    • 奇怪的是,我几乎可以肯定这曾经适用于早期版本的 ElasticSearch。我曾经依赖于这种行为,因此增量更新可以在进行完整索引重建时流向两个索引。
    猜你喜欢
    • 2021-08-31
    • 2017-02-22
    • 1970-01-01
    • 2014-08-10
    • 2021-10-24
    • 2017-07-15
    • 2014-09-21
    • 2021-11-06
    • 2018-03-21
    相关资源
    最近更新 更多