我最近开始在一家使用Elasticsearch的公司工作。虽然它的大部分概念与关系数据库有些相似,而且我能够理解它们,但我仍然不太了解别名的概念。
我在这里找不到任何此类问题,Elasticsearch website提供的信息也没有多大帮助。
有人可以解释别名是什么,理想情况下包括需要它们的情况的例子吗?
答案 0 :(得分:5)
别名就像软链接或实际索引的快捷方式
优点是能够在index2b上构建或重新索引时具有指向index1a的别名,并且由于所有代码应指向的别名,交换它们的时刻都是原子的
重命名别名是一个简单的删除,然后在同一个API中添加操作。这个操作是原子的,不需要担心别名没有指向索引的短时间内:
[编辑]指出@wholevinski别名有其他功能,如:
可以为动作指定多个索引...
所有信息都在您链接的页面中
[EDIT2]更多关于为什么原子性的需要/利益
关键是"零停机时间" https://en.wikipedia.org/wiki/Zero_unscheduled_downtime或https://en.wikipedia.org/wiki/High_availability
https://www.elastic.co/guide/en/elasticsearch/guide/current/index-aliases.html
我们将在本书后面详细讨论别名的其他用法。现在我们将解释如何使用它们从旧索引切换到新索引,零停机时间。
答案 1 :(得分:2)
例如,您需要将应用程序的日志保留至少一年。您决定使用基于时间的索引,这意味着您使用以下格式保存到索引中:2018-02-logs, 2018-03-logs
等。为了能够在每个索引中搜索,您创建以下别名:
POST /_aliases
{
"actions": [{
"add": {
"alias": "current-logs", "indices": [ "2018-02-logs","2018-03-logs" ]
}
}]
}
并查询如下:
GET /current-logs/_search
另一个优点是您可以非常轻松地删除过时的值:
POST /_aliases
{
"actions": [
{ "remove": { "alias": "current-logs", "index": "logs_2018-01" }}
]
}
和DELETE /logs_2018-01
答案 2 :(得分:0)
别名的创建基本上是为了对一组索引进行分组,并使它们可以不加名称地访问。是指向一组索引的指针。您还可以对所有这些索引应用查询/条件。始终在同一组索引上执行查询或创建仪表板时,此功能非常有用。此外,如果将来您更改别名的索引名称,最终用户将不会注意到该更改,因为这对他们来说是透明的,您只会更新指针。