Elasticsearch应用(四)
1.目标
这一章主要解读以下索引
2.什么是索引
- 索引是文档的容器,是一类文档的结合
- 索引是一个逻辑命名空间,它映射到一个或多个主分片,并且可以具有零个或多个副本分片
- 索引中数据分散在Shard上
- 索引的Mapping定义文档字段的类型
- 索引的Setting定义不同的数据分布
3.索引模板(Index Template)
介绍
- 帮助你设定索引的Mappings和Settings
- 按照一定的规则,自动匹配到新创建索引上
- 模板仅在一个索引被新创建时,才会产生作用
- 修改模板不会影响已经创建的索引
- 你可以设定多个索引模板,这些设置会被“merge”在一起
- 你可以指定“order”的数值,控制“merging”的过程
工作方式(当索引被创建时)
- 应用ES默认的settings与mappings
- 应用order数值低的index Template中的设定
- 应用高的index Template中的设定之前的设定会被覆盖
- 用户所指定的settings和mappings,并覆盖之前模板中的设定
请求路径
# 创建模板,template_default 是这个名字的话就是默认的模板
PUT _template/[index-template]
{"index_patterns": ["test*"],"order": 1,"settings": {"number_of_shards": 1,"number_of_replicas": 2},"mappings": {"date_detection": false,"numeric_detection": true}
}
# 查看template信息
GET /_template/<index-template>
GET /_template/tem*
4.索引别名(aliases)
介绍
- 索引别名是用于引用一个现有索引的辅助名称
- 查询,插入,修改 文档都可以使用别名
请求格式
POST /_aliases
{"actions": [{"add": {"index": "<index>","alias": "别名名称"}}]
}POST /_aliases
{"actions": [{"add": {"index": "<index>","alias": "别名名称","filter": {"range": {"rating": {"gte": 4}}}}}]
}
PUT /<index>
{"mappings": {"properties": {"<field1>": {"type": "字段类型"},"<field2>": {"type": "alias","path": "目标字段的路径(<field1>)" }}}
}
注意
- path是指目标字段的路径。请注意,这必须是完整路径,包括任何父对象(例如object1.object2.field)
- 不支持仅写入字段别名
- 不支持在插入请求或更新请求中使用别名
- 不支持多字段
- 指定查找路径的查询部分不能通过其别名引用字段
5.索引API
获取索引设置
请求路径
GET /[索引名]/_settingsGET /[索引名]/_settings/[设置项setting]
请求参数:setting
- 可选
- 字符串
- 逗号分隔列表或通配符表达式
请求示例
GET /twitter,kimchy/_settingsGET /_all/_settingsGET /log_2013_*/_settings
关闭索引
请求路径
POST /[索引名]/_close
请求参数:索引名
- 可选
- 字符串
- 索引名称的逗号分隔列表或通配符表达式
打开索引
请求路径
POST /[索引名]/_open
请求参数:索引名
- 可选
- 字符串
- 索引名称的逗号分隔列表或通配符表达式
6.创建索引的示例
POST /test
{"settings":{"index":{// 索引默认分词器"analysis.analyzer.default.type":"ik_max_word"}// 自定义分词器"analysis":{"analyzer":{"ik_pinyin":{ // 自定义分词器的名称"tokenizer":"ik_max_word", // 基本分词器"filter":"pinyin_filter" // 自定义的分词器}},"filter":{ // 自定义tokenizer filter"pinyin_filter":{ // 过滤器类型"type":"pinyin", // 这个过滤器的类型"keep_separate_first_letter":false, // 是否分词每个字的首字母"keep_full_pinyin":true, // 是否分词全拼"keep_original":true // 是否保留原始输入"remove_duplicated_term":true // 是否删除重复项"keep_joined_full_pinyin":true,"limit_first_letter_length":16,"none_chinese_pinyin_tokenize":false}}} },"mappings":{"dynamic":"strict", // 动态映射严格模式"properties":{"name":{ // 字段名称"type":"text", // 字段类型"sotre":true, // 是否单独存储"index":true, // 是否创建倒排索引"analyzer":"ik_max_word", // 创建倒排索引时候的分词器"search_analyzer":"ik_pinyin", // 搜索时候的分词器"dynamic":true // 动态映射设置}}}}