Elasticsearch поддерживает атомарное переименование псевдонима, см. здесь :
Переименование псевдонима — это простая операция удаления, а затем добавления в том же API. Эта операция является атомарной, не нужно беспокоиться о коротком промежутке времени, когда псевдоним не указывает на индекс.
curl -XPOST 'http://localhost:9200/_aliases' -d '
{
"actions" : [
{ "remove" : { "index" : "test1", "alias" : "alias1" } },
{ "add" : { "index" : "test1", "alias" : "alias2" } }
]
}'
С помощью NEST того же можно добиться с помощью Client.Rename.
Оказывается, также возможно атомарно обновить псевдоним, чтобы он указывал на другой индекс:
curl -XPOST 'http://localhost:9200/_aliases' -d '
{
"actions" : [
{ "remove" : { "index" : "test1", "alias" : "alias1" } },
{ "add" : { "index" : "test2", "alias" : "alias1" } }
]
}'
Любой способ сделать последнее непосредственно в NEST?
Прямо сейчас я использую Client.RemoveAlias
, за которым следует Client.Alias
, что является не атомарным.
ОБНОВЛЕНИЕ: оказывается, это можно сделать, отправив необработанный JSON через client.Raw.IndicesUpdateAliasesPost
, но мне все еще интересно, есть ли более простой способ. Если нет, я планирую добавить это в NEST самостоятельно.
IndicesUpdateAliasPost
привык, но с типизированным интерфейсом, кстати :) 28.03.2014Client.Indices.BulkAlias
stackoverflow.com/a/58295057/772086. 09.04.2020