Elasticsearch Index Aliases详解

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: index aliases,索引别名,有点类似名称映射,一个索引别名可以映射多个真实索引,索引别名在定义时还支持filter,构成同一个索引,不同的视图。思考:一个索引别名可以映射成多个索引,那如果向一个别名添加一个文档时,会在该别名下对应的所有索引下都创建一个文档?1、如何创建索引别名PO...

index aliases,索引别名,有点类似名称映射,一个索引别名可以映射多个真实索引,索引别名在定义时还支持filter,构成同一个索引,不同的视图。

思考:一个索引别名可以映射成多个索引,那如果向一个别名添加一个文档时,会在该别名下对应的所有索引下都创建一个文档?

1、如何创建索引别名

POST /_aliases
{
    "actions" : [
        { "remove" : { "index" : "test1", "alias" : "alias1" } },
        { "add" : { "index" : "test2", "alias" : "alias1" } }
    ]
}

索引创建API,支持add、remove操作,当前Restfull java客户端未封装该方法。

为索引创建别名,也可以在创建索引API中指定:

PUT test
{
    "aliases" : {
        "alias_1" : {},
        "alias_2" : {
            "filter" : {
                "term" : {"user" : "kimchy" }
            },
            "routing" : "kimchy"
        }
    }
}

2、Filtered Aliases

带有过滤器的别名提供了创建相同索引的不同“视图”的简单方法。过滤器可以使用查询DSL定义,并应用于所有搜索、计数、按查询删除以及类似于此别名的操作。

其使用示例如下,假设存储该索引:

PUT /test1
{
  "mappings": {
    "_doc": {
      "properties": {
        "user" : {
          "type": "keyword"
        }
      }
    }
  }
}

为别名设置过滤器的使用方法如下:

POST /_aliases
{
    "actions" : [
        {
            "add" : {
                 "index" : "China_Provice_Index",
                 "alias" : "shanghai_index",
                 "filter" : { "term" : { "provice" : "shanghai" } }
            },
   "add" : {
                 "index" : "China_Provice_Index",
                 "alias" : "guangzhou_index",
                 "filter" : { "term" : { "provice" : "guangzhou" } }
            }
        }
    ]
}

通过为China_Provice_Index(中国各省份人才数据库索引)创建别名,shanghai_index、guangzhou_index,这样从两个别名进行数据查询,只会查出各自省份的数据,是不是有点类似于”多租户“,也即通过索引别名并指定过滤器,能为同一个索引提供不同的视图。

3、Routing

在创建别名时可以指定路由值。

POST /_aliases
{
    "actions" : [
        {
            "add" : {
                 "index" : "test",
                 "alias" : "alias1",
                 "routing" : "1"
            }
        }
    ]
}

使用别名alias1查询内容时,会自动使用该值进行路由。
也可以通过search_routing、index_routing分别来指定查询、索引时的路由值,注意,index_routing只能指定一个值。

4、Write Index

如果一个别名只映射了一个真实索引,则可以使用别名进行index api(即索引文档,写文档),但如果一个别名同一时间映射了多个索引,默认是不能直接使用别名进行索引文档,因为ES不知道文档该发往哪个索引。

可以使用is_write_index属性为一个别名下的其中一个索引指定为写索引,此时则可以直接使用别名进行index api的调用。
例如:

POST /_aliases
{
    "actions" : [
        {
            "add" : {
                 "index" : "test",
                 "alias" : "alias1",
                 "is_write_index" : true
            }
        },
        {
            "add" : {
                 "index" : "test2",
                 "alias" : "alias1"
            }
        }
    ]
}

es index aliases,索引别名就介绍到这里了。


原文发布时间为:2019-03-14
本文作者:丁威,《RocketMQ技术内幕》作者。
本文来自中间件兴趣圈,了解相关信息可以关注自中间件兴趣圈

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
1天前
|
索引
Elasticsearch exception [type=illegal_argument_exception, reason=index [.1] is the write index for data stream [slowlog] and cannot be deleted]
在 Elasticsearch 中,你尝试删除的索引是一个数据流(data stream)的一部分,而且是数据流的写入索引(write index),因此无法直接删除它。为了解决这个问题,你可以按照以下步骤进行操作:
|
2月前
|
API 索引
Elasticsearch Index Shard Allocation 索引分片分配策略
Elasticsearch Index Shard Allocation 索引分片分配策略
77 1
|
10月前
|
存储 缓存 自然语言处理
Elasticsearch倒排索引(二)深入Term Index
Elasticsearch倒排索引(二)深入Term Index
235 0
|
11月前
|
API
Elasticsearch - cluster_block_exception [FORBIDDEN/12/index read-only / allow delete (api)]
Elasticsearch - cluster_block_exception [FORBIDDEN/12/index read-only / allow delete (api)]
85 0
Elasticsearch - cluster_block_exception [FORBIDDEN/12/index read-only / allow delete (api)]
|
监控 Java 关系型数据库
Elasticsearch之索引管理API(Index management)
Elasticsearch之索引管理API(Index management)
Elasticsearch之索引管理API(Index management)
|
运维 Linux API
【ElasticSearch实战】——ElasticSearch6 报错FORBIDDEN/12/index read-only / allow delete (api)
【ElasticSearch实战】——ElasticSearch6 报错FORBIDDEN/12/index read-only / allow delete (api)
193 0
|
存储 缓存 监控
Elasticsearch Index Monitoring(索引监控)之Index Stats API详解
Elasticsearch Index Monitoring(索引监控)之Index Stats API详解
Elasticsearch Index Monitoring(索引监控)之Index Stats API详解
|
Java API 索引
Elasticsearch Index Templates(索引模板)
Elasticsearch Index Templates(索引模板)
|
存储 Java API
Elasticsearch Index Aliases详解
Elasticsearch Index Aliases详解
Elasticsearch Index Aliases详解

热门文章

最新文章