1.索引管理
创建索引
PUT http://127.0.0.1:9200/secisland { "settings": { "number_of_shards": 5, "number_of_replicas": 1 }, "aliases": {}, "mappings": { "doc": { "properties": { "sign_id": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 128 } } }, "pin": { "type": "keyword" }, "app_id": { "type": "keyword" }, "msg_content": { "type": "text" }, "create_time": { "type": "date", "format": "yyyyMMddHHmmss||yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||yyyy/MM/dd HH:mm:ss||yyyy/MM/dd||epoch_millis" }, "mobile_num": { "type": "keyword" }, "expand_num": { "type": "keyword" }, "data_coding": { "type": "keyword" } } } } }
删除索引
DELETE http://127.0.0.1:9200/secisland/
获取索引信息
GET http://127.0.0.1:9200/secisland/
打开、关闭索引
POST http://127.0.0.1:9200/secisland/_open POST http://127.0.0.1:9200/secisland/_close
可以同时打开或关闭多个索引,全部索引可以使用_all打开或关闭,或者使用通配符表示全部(比如*)。
设置config/elasticsearch.yml 属性 action.destructive_requires_name 为 true,禁止使用通配符或者_all。
关闭索引会继续占用磁盘空间。
设置settingscluster.indices.close.enable 为 false ,禁止使用关闭索引功能。
判断索引是否存在
HEAD http://127.0.0.1:9200/secisland
2.索引映射管理
修改映射
PUT http://127.0.0.1:9200/secisland/_mapping/doc { "properties": { "name": {"type": "keyword"} } }
# 可以同时修改多个索引映射,索引名称支持逗号分隔,_all,通配符*。
获取映射
GET http://127.0.0.1:9200/secisland/_mapping/doc
获取字段映射
GET http://127.0.0.1:9200/secisland/_mapping/doc/field/text
格式:
GET host:port/{index}/_mapping/doc/field/{field}
#{index},{field}可以使用逗号分割,也可以使用通配符,其中{index}可以使用_all表示全部索引
3.索引别名
创建别名
格式:PUT /{index}/_alias/{name} 参数:{"routing":"1","filter":{}} {index} 可以使用*,_all,正则表达式或者逗号分隔 {name} 索引名称 PUT http://127.0.0.1:9200/secisland/_alias/user_12 { "routing":"12", "filter":{ "term":{"user_id":12} } }
删除别名
DELETE http://127.0.0.1:9200/secisland/_alias/user_12
查询别名
GET http://127.0.0.1:9200/secisland/_alias/* GET http://127.0.0.1:9200/_alias/user_12
判断别名是否存在
HEAD http://127.0.0.1:9200/secisland/_alias/user_12 HEAD http://127.0.0.1:9200/secisland/_alias/* HEAD http://127.0.0.1:9200/_alias/user_12 HEAD http://127.0.0.1:9200/_alias/*
4.索引配置
更新索引配置
PUT http://127.0.0.1:9200/secisland/_setting { "index":{"number_of_replicas":4} }
更新分词器
添加分析器前,必须先关闭索引,添加后再打开索引。 POST http://127.0.0.1:9200/secisland/_close PUT http://127.0.0.1:9200/secisland/_settings { "analysis":{ "analyzer":{ "content":{"type":"custom","tokenizer":"whitespace"} } } } POST http://127.0.0.1:9200/secisland/_open
获取配置
GET http://127.0.0.1:9200/secisland/_open
索引分析
包括3个过程: 字符过滤器(character filter)->分词器(tokenizer)->标记过滤器(token filters) 测试分析器 POST http://127.0.0.1:9200/_analyze { "analyzer":"standard", "text":"this is a test" } POST http://127.0.0.1:9200/_analyze { "tokenizer":"keyword", "token_filters":["lowercase"], "char_filters":["html_strip"], "text":"detailed output", "explain":true }
索引模板
创建模板,适配te*索引 PUT http://127.0.0.1:9200/_template/template_1 { "template":"te*", "settings":{}, "mapping":{} } 删除模板 DELETE http://127.0.0.1:9200/_template/template_1 获取模板 GET http://127.0.0.1:9200/_template/template_1 GET http://127.0.0.1:9200/_template/temp* GET http://127.0.0.1:9200/_template/template_1,template_2 GET http://127.0.0.1:9200/_template/ 判断索引是否存在 HEAD http://127.0.0.1:9200/_template/template_1 多模板匹配,合并多模板配置,如果配置重复,这是应设置order属性,0开始,数值低优先级高,优先级相同,后匹配的覆盖之前的配置。
重建索引
可以指定查询条件,同时支持通过脚本修改文档。 POST http://127.0.0.1:9200/_reindex { "size":10000, "source":{ "index":"secisland", "query":{ "match":{"company": "cat"} } }, "dest":{"index":"new_secisland", "version_type":"external","routing":"=cat"}, "script":{ "internal":"if (ctx._souce.foo == 'bar') {ctx._version++;ctx._source.remove('foo')}" } }
5.索引监控
索引统计接口
GET http://127.0.0.1:9200/_stats GET http://127.0.0.1:9200/_stats/indexing GET http://127.0.0.1:9200/index1,index2/_stats/indexing 统计项: docs:文档、删除文档(没有合并的文档)的数量。受刷新频率的影响。 store:索引的大小。 indexing:索引统计数据。 get:获取统计数据,包含缺失统计。 search:搜索统计数据。可以统计不同groups的数据。 completion:完成建议统计数据。 fielddata:字段数据统计数据。 flush:冲洗统计数据。 merge:merge统计数据。 request_cache:分片请求缓存统计数据。 refresh:刷新统计数据。 suggest:建议统计数据 translog:事物日志统计数据。
索引分片接口
GET http://127.0.0.1:9200/secisland/_segments 索引分片信息: _3:json文档的键名,代表分片的名称。用来生成文档名,所有以分片名开头的文档属于这个分片。 generation:需要写新的分片时生成的数值,基本是递增的。分片名从这个数字派生出来。 num_docs:存储在分片中没有被删除的文档数量。 deleted_docs:存储在分片中被删除的数量。 size_in_bytes:分片使用的磁盘空间。 memory_in_bytes:分片占用的内存数量。 committed:分片在磁盘上是否同步。 search:分片是否可以搜索。 version:写分片的lucene版本。 compound:分片是否存储在符合文件中。
索引恢复接口
GET http://127.0.0.1:9200/secisland/_recovery 索引恢复输出字段: id:分片。 type:恢复类型:存储、快照、复制、迁移。 stage:恢复阶段:初始化(没有开始)、索引(读取索引元字段,从源复制到目的地)、开始(启动恢复;开启使用的索引)、事物日志(重做事物日志)、完成(清理)、结束。 primary:true为主分片;false为从分片。 start_time:恢复开始时间戳。 stop_time:恢复结束时间戳。 total_time_in_millis:恢复时间(毫秒)。 source:恢复原:如果是快照恢复,描述备份仓库;否则描述源节点。 target:目标节点。 index:物理索引恢复的统计数据。 translog:事物日志恢复的统计数据。 start:打开和启动索引的时间统计数据。
索引分片存储接口
GET http://127.0.0.1:9200/secisland/_shard_stores?status=green
6.状态管理
清除缓存
GET http://127.0.0.1:9200/secisland/_cache/clear #可以明确设置query、fielddata、request来清理特定缓存。
索引刷新
POST http://127.0.0.1:9200/secisland/_refresh
冲洗
POST http://127.0.0.1:9200/secisland/_flush #将数据保存的索引存储,清除内部事务日志,释放内存空间。
合并索引
POST http://127.0.0.1:9200/secisland/_forcemerge 参数: max_num_segments:用于合并的分片数量。为了充分合并,可以设置值为1。默认执行是简单的检查是否需要合并,如果需要则执行合并。 only_expunge_deletes:合并过程是否删除分片中被删除的文档。默认是false。 flush:合并后是否执行冲洗,默认是true。
7.文档管理
增加文档
PUT http://127.0.0.1:9200/secisland/doc/1 { "a":1 }
- 自动创建索引相关:action.auto_create_index=false 禁用自动创建索引。
index.mapper.dynamic=false 禁用自动映射字段类型。
自动创建索引可以通过索引模板设置索引,
action.auto_create_index=+aaa*,-bbb*,+ccc*,(+表示允许,-表示禁止) - 版本号常用在对事物的处理中,操作的时候指定版本号,系统则会对版本号进行检查。
- op_type=create 写入文档时,如果文档存在则会报错,如果不知道操作类型为create,则会更新数据。
更新文档
PUT http://127.0.0.1:9200/secisland/doc/1/_update { "a":2 }
删除文档
DELETE http://127.0.0.1:9200/secisland/doc/1
查询文档
GET http://127.0.0.1:9200/secisland/doc/1
多种查询条件和参数,此处不做详解。
多文档操作
POST http://127.0.0.1:9200/_mget { "docs":[ {"_indes":"secisland", "id":"1"}, {"_indes":"secisland", "id":"2"} ] }
块操作
POST http://127.0.0.1:9200/_bulk {"index":{"_index":"secisland","_id":"10"}} {"field1":"value1"} {"index":{"_index":"secisland","_id":"11"}} {"field1":"value2"}