elasticsearch中的别名是什么?

Jan*_*isl 2 elasticsearch

我最近开始在一家使用Elasticsearch的公司工作.虽然它的大部分概念与关系数据库有些相似,而且我能够理解它们,但我仍然不太了解别名的概念.

我在这里没有找到任何这样的问题,Elasticsearch网站上提供的信息也没有多大帮助.

有人可以解释别名是什么,理想情况下包括需要它们的情况的例子吗?

Eir*_*dou 13

@arhak 很好地涵盖了这个话题。一个(至少)让我理解索引价值的用例是需要删除过时的文档,更具体地说是在使用基于时间的索引时

例如,您需要将应用程序的日志保留至少一年。您决定使用基于时间的索引,这意味着您使用以下格式保存到索引中:2018-02-logs, 2018-03-logs等。为了能够在每个索引中进行搜索,您创建了以下别名:

POST /_aliases
{
 "actions": [{ 
     "add": {
          "alias": "current-logs", "indices": [ "2018-02-logs","2018-03-logs" ]
        }  
  }]
}
Run Code Online (Sandbox Code Playgroud)

并查询如下:

GET /current-logs/_search
Run Code Online (Sandbox Code Playgroud)

另一个优点是您可以非常轻松地删除过时的值:

POST /_aliases
{
  "actions": [

      { "remove": { "alias": "current-logs",  "index": "logs_2018-01" }}
  ]
}
Run Code Online (Sandbox Code Playgroud)

DELETE /logs_2018-01


arh*_*hak 5

别名就像软链接或实际索引的快捷方式

优点是能够在index2b上构建或重新索引时有一个指向index1a的别名,并且交换它们的时刻是原子的,这要归功于别名,所有代码都应指向该别名

重命名别名是一个简单的删除然后在同一API中添加操作.此操作是原子操作,无需担心别名未指向索引的短时间段:

[编辑]指出@wholevinski别名有其他功能,如:

可以为动作指定多个索引......

所有信息都在您链接的页面中

[EDIT2]更多关于为什么原子性的需要/好处

关键是"零停机时间" https://en.wikipedia.org/wiki/Zero_unscheduled_downtimehttps://en.wikipedia.org/wiki/High_availability

https://www.elastic.co/guide/en/elasticsearch/guide/current/index-aliases.html

我们将在本书后面详细讨论别名的其他用法.现在我们将解释如何使用它们从旧索引切换到新索引,零停机时间.