23

ElasticSearch ドキュメントには次のように書かれています。

エイリアスは複数のインデックスにマップすることもできます。エイリアスを指定すると、エイリアスは自動的にエイリアス インデックスに展開されます。

しかし、エイリアスを 2 つのインデックスに追加して両方に書き込もうとすると、どちらもドキュメントで更新されないようです。エイリアスの 1 つを削除すると、まだ存在するエイリアスに正しく書き込まれます。

複数の書き込みエイリアスで失敗する:

$ 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 は複数のインデックスへの書き込みをサポートしていますか? 複数のインデックスを指している場合、エイリアスは読み取り専用ですか?

4

1 に答える 1

29

答えはノーだ

したがって、これをもっと深くトリアージする必要があったようですが、クライアントが es から受け取る応答は次のとおりです。

ElasticSearchIllegalArgumentException [エイリアス [dev_write] に複数のインデックスが関連付けられています [[dev_01, dev]]、単一のインデックス操作を実行できません

ドキュメントが私を少し混乱させたので、ドキュメントが前もってもう少し明示的であることを望みます

最初は、次のことができることを暗示しているようです。

インデックス エイリアス API を使用すると、インデックスに名前を付けてエイリアスを作成できます。すべてのAPI はエイリアス名を実際のインデックス名に自動的に変換します。エイリアスは、複数のインデックスにマップすることもできます...

エイリアスを複数のインデックスに関連付けるのは、単にいくつかの追加アクションです...

ページのさらに下では、次のことができないことがわかります。

複数のインデックスを指すエイリアスにインデックスを付けるとエラーになります。

于 2013-10-29T18:10:13.693 に答える