Elasticsearch应用(四)
 
1.什么是索引
 
- 索引是文档的容器,是一类文档的结合
 - 索引是一个逻辑命名空间,它映射到一个或多个主分片,并且可以具有零个或多个副本分片
 - 索引中数据分散在Shard上
 - 索引的Mapping定义文档字段的类型
 - 索引的Setting定义不同的数据分布
 
 
2.索引模板(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*
 
3.索引别名(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)
 - 不支持仅写入字段别名
 - 不支持在插入请求或更新请求中使用别名
 - 不支持多字段
 - 指定查找路径的查询部分不能通过其别名引用字段
 
 
4.索引API
 
获取索引设置
 
请求路径
 
GET /[索引名]/_settingsGET /[索引名]/_settings/[设置项setting]
 
请求参数:setting
 
 
请求示例
 
GET /twitter,kimchy/_settingsGET /_all/_settingsGET /log_2013_*/_settings
 
关闭索引
 
请求路径
 
POST /[索引名]/_close
 
请求参数:索引名
 
 
打开索引
 
请求路径
 
POST /[索引名]/_open
 
请求参数:索引名
 
 
5.创建索引的示例
 
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 // 动态映射设置}}}}