ES索引

参考链接: Index api: Index APIs | Elasticsearch Guide [7.13] | Elastic

ES Index Define

提到ES索引的定义,就不得不提到下面几个名词:

Settings: 

定义一些ES系统配置,包括动态和静态Setting,可以在创建索引时指定,也可以在索引创建后修改动态settings.

静态settings 指在创建了Index之后就不允许更改了,如果需要更改,则需要重新创建索引进行reindex。

项目中用到的静态配置:

index.number_of_shards  Index主分片数量,默认是1,最大是1024

项目中用到的动态配置:

index.number_of_replicas 副本数量

index.max_result_window scroll查询 doc最大返回数量,默认10000,业务需要每次取100000

index.refresh_interval refresh时间间隔,每refresh一次会生成一个段,默认为1s,进实时搜索从此而来

Mapping: 

相当于表结构,包括动态和静态Mapping,可以在创建索引时指定,也可以在索引创建后进行修改, mapping可以定义如下配置:

字段名

字段类型

其他参数,如分词器:

Mapping parameters | Elasticsearch Guide [7.13] | Elastic

alias: 

索引别名,可以在创建索引时指定,也可以在索引创建后添加.

一个索引可以有多个别名

一个别名也可以对应多个索引

别名只用来查询,不可用来存储

别名可以在用户无感知的情况下进行数据切换

template: 

针对一个或多个索引创建且绑定的模板,在模板中可以定义settings和mapping,绑定了模板的index在创建时将会自动使用模板中的配置而不是默认配置.

索引名的命名规则:

只能小写

不能包含\,/,*,?,",<,>,|, ` ` 空格,,,#

7.0版本可以包含:, 可能在以后版本删除

不能以-, _, +开头

不能是.or..

长度不能超过255个字节

可以以.开头,但是已经废弃

所以索引名必须小写,最好不要包含奇怪字符,也最好不要是中文,一般我们可以使用如下格式:

data_type-yyyy.mm/dd


ES Index 的增删改查

创建索引:

1. 以默认配置创建索引:

PUT facebook

2. 自定义配置创建索引

PUT facebook

{

  "settings": {

    "number_of_shards": 2,

    "number_of_replicas": 1

  },

  "mappings": {

    "properties": {

      "username": {

        "type": "keyword"

      },

      "age": {

        "type": "double"

      }

    }

  },

  "aliases": {

    "social_platform": {}

  }

}

删除索引

1. 直接删除索引,索引和数据都被清空

DELETE facebook

2.delete by query(删除数据,保留索引):

POST facebook/delete_by_query

{

  "query":{

    "match_all":{}

  }

}

更新索引

ES索引中的数据只能删除和被覆盖,不可以更改。

关于索引,我们可以对以下3个配置进行更新:

1.更新索引动态settings:

PUT facebook/_settings

{

  "settings": {

    "number_of_replicas": 2

  }

}

2.更新索引Mapping:

    Object对象可以添加新的属性.

    已经存在的fields里面可以添加fields,以构成一个字段多种类型.

    ignore_above 是可以更新的.

3. 添加索引alias

POST /_aliases

{

  "actions": [

    {

      "add": {

        "index": "facebook",

        "alias": "social_platform"

      }

    }

  ]

查询索引

count和data查询:

GET facebook/_count

GET facebook/_search?pretty

mapping和settings查询:

GET facebook/_mapping

GET facebook/_settings


索引的其他API:

Index Exist API:判断一个索引是否存在

HEAD facebook

response: 200 - OK or 404 - Not Found

Flush API

索引的Flush 会将内存中的数据存储到磁盘中,并更新translog的记录

POST /facebook/_flush

POST _flush

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容