ElasticSearch 索引


创建索引

对比关系型数据库,创建索引===创建数据库
PUT http://127.0.0.1:9200/索引名
重复添加索引,会返回错误信息

查看全部索引

GET http://127.0.0.1:9200/_cat/indices?v
_cat表示查看,indices 表示索引,整体含义是查看当前ES服务器中的所有索引
响应结果

查看单个索引

GET http://127.0.0.1:9200/索引名

删除索引

DELETE http://127.0.0.1:9200/索引名

索引别名

给一个索引或者多个索引起的另一个名字
典型的应用场景是针对索引使用的平滑切换
平滑操作是原子性的操作,应用端无感知

使用别名

  1. 方式一
  • 创建索引 PUT http://127.0.0.1:9200/my_index
  • 将别名 my_alias 指向my_index PUT http://127.0.0.1:9200/my_index/_alias/my_alias
  1. 方式二,索引:my_index,新增别名my_alias
  • POST http://127.0.0.1:9200/_aliases
    { "actions": [ { "add": { "index": "my_index", "alias": "my_alias" }}  ]}
  1. 方式三,增加别名和移除别名混合使用;给my_index移除别名,给my_index_v2新增别名
  • POST http://127.0.0.1:9200/_aliases
    {    
      "actions": [
        { "remove": { "index": "my_index", "alias": "my_alias" }}
        { "add": { "index": "my_index_v2", "alias": "my_alias" }}
      ]
    }

使用示例

假设我们每天全量数据同步到 es 的问答索引名为 qa_20200501,这种带有日期后缀的形式,调用索引查询的指定索引名是 qa 即可,当每天切换到最新数据的索引时,只需将现有的索引别名映射删除,将新的索引映射到别名下即可,操作示例
POST http://127.0.0.1:9200/_aliases

{    
  "actions": [
    { "remove": { "index": "qa_20200501", "alias": "qa" }},
    { "add": { "index": "qa_20200502", "alias": "qa" }}
  ]
}

索引别名本质上是一个快捷方式或软链接,并且它是一个原子性的操作。
此外,**应用中使用别名而不是索引名,这样可以在任何时候重建索引**
注意
如果别名和索引是一对多的,使用别名会发生错误,因为 es 不知道把文档写入哪个索引中去或者从哪个索引中读取文档

索引配置

静态配置:创建后不能修改
动态配置:可以随时修改
固定属性:创建后不能修改

固定属性

index.creation_date:索引的创建时间戳。
index.uuid:索引的 uuid 信息。
index.version.created:索引的版本号。

静态配置

index.number_of_shards:索引的主分片数,默认是 5。这个配置在索引创建后不能修改
es.index.max_number_of_shards 设置索引最大分片数,默认为 1024。
index.codec:数据存储的压缩算法,默认值为 LZ4,可选值还有best_compression,它比 LZ4 可以获得更好的压缩比(即占据较小的磁盘空间,但存储性能比 LZ4 低)。
index.routing_partition_size:路由分区数,如果设置了该参数,其路由算法为:( hash(_routing) + hash(_id) % index.routing_parttion_size ) % number_of_shards。如果该值不设置,则路由算法为 hash(_routing) % number_of_shardings,_routing 默认值为 _id。

配置分析器
index.analysis:分析器最外层的配置项,内部主要分为 char_filter、tokenizer、filter 和 analyzer。
char_filter:定义新的字符过滤器件。
tokenizer:定义新的分词器。
filter:定义新的 token filter,如同义词 filter。
analyzer:配置新的分析器,一般是char_filter、tokenizer 和一些 token filter 的组合。

索引动态配置

index.number_of_replicas:索引主分片的副本数,默认值是 1,该值必须大于等于 0,这个配置可以随时修改。
index.refresh_interval:执行新索引数据的刷新操作频率,该操作使对索引的最新更改对搜索可见,默认为 1s。也可以设置为 -1 以禁用刷新

创建索引,自定义配置

PUT http://127.0.0.1:9200/索引名

{"settings":{"index":{"search":{"slowlog":{"level":"debug","threshold":{"fetch":{"warn":"1000ms","trace":"200ms","debug":"800ms","info":"500ms"},"query":{"warn":"1000ms","trace":"200ms","debug":"800ms","info":"500ms"}}}},"number_of_shards":"5","max_result_window":"500000","analysis":{"normalizer":{"my_normalizer":{"filter":["lowercase"],"type":"custom"}}},"number_of_replicas":"1"}}}

文章作者: zrh
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 zrh !
  目录