[b]1创建索引[/b]
每个索引都会有一些相关配置
如上设置数据节点为3个(默认5个),副本2个(默认1个)。
创建索引配置的时候也可以设置索引内部的数据定义
一般情况下索引创建在主数据节点开始了之后返回
acknowledged代表索引是否成功创建
shards_acknowledged代表是否足够的shard节点开始了
[b]2删除索引[/b]
删除索引
[b]3获取索引[/b]
获取索引信息
[b]4判断索引是否存在[/b]
[b]5打开关闭索引api[/b]
我们可以关闭或者开启索引的接口。当索引接口被关闭的时候不能对该索引进行读写操作。
[b]8创建新类型数据定义[/b]
在已有的索引上添加新类型或者对已有类型添加新的字段
[b]9获取数据定义[/b]
获取某一类型的定义
获取多个类型的定义
获取所有定义
[b]11type是否存在[/b]
查看某个索引下的类型是否存在
[b]12索引别名[/b]
可以给索引添加别名,也可以给多个索引添加相同的别名
[b]13修改索引设置[/b]
可以通过http接口动态对索引进行设置。
设置备份为4
修改索引生效时间
[b]14获取索引设置[/b]
获取某个索引的设置
其他一些写法
[b]15分析器[/b]
尝试各种分析器。如使用标准分析器分析一段话
或者通过指定断词,词过滤器,字符过滤器来自己定义分析器。次过滤器可以使用简介词代替.
[b]16索引模板[/b]
用户可以自己定义索引模板(包括设置和定义),之后再使用的时候可以直接使用模板。修改模板不会对已有的创建有修改。例
删除模板
获取模板
查看是否存在模板
[b]18索引的统计信息[/b]
查看索引的统计信息
[b]19索引分片[/b]
可以查看索引分片信息,对优化起到一定提示
为了调试希望展示更多的信息,可以添加verbose
[b]20索引恢复[/b]
提供索引修复的详细信息。如下会显示索引恢复信息
[b]21索引数据保存[/b]
获取数据节点保存信息。默认情况下之展示未分配的数据节点。当集群状态为黄色的时候展示至少有一个未分配的副本节点。当集群状态为红色的时候展示未分配的主节点。
[b]22清理缓存[/b]
清理缓存
[b]24刷新[/b]
默认是定时刷新(1秒)。es中的数据默认是存储在内存中的经过1秒后会被写入到文件系统缓存,这样文档就可以被搜索到了(这也是为什么es是近实时的原因)。以下可以强制刷新
[b]25合并分片[/b]
max_num_segments:代表合并的段数。为了充分合并,可以设置为1.默认检查是否需要合并,如果需要则执行
only_expunge_deletes:是否只对删除的数据进行合并,默认为false。在lucene中。删除操作只是把文档标记为删除,并没有真实删除。
flush在执行玩合并之后是否执行刷新操作。默认为true
也可以对多个索引执行操作
每个索引都会有一些相关配置
PUT twitter
{
"settings" : {
"index" : {
"number_of_shards" : 3,
"number_of_replicas" : 2
}
}
}
如上设置数据节点为3个(默认5个),副本2个(默认1个)。
创建索引配置的时候也可以设置索引内部的数据定义
PUT test
{
"settings" : {
"number_of_shards" : 1
},
"mappings" : {
"type1" : {
"properties" : {
"field1" : { "type" : "text" }
}
}
}
}
一般情况下索引创建在主数据节点开始了之后返回
{
"acknowledged": true,
"shards_acknowledged": true
}
acknowledged代表索引是否成功创建
shards_acknowledged代表是否足够的shard节点开始了
[b]2删除索引[/b]
删除索引
DELETE /twitter
同样也支持根据通配符删除多个[b]3获取索引[/b]
获取索引信息
GET /twitter
[b]4判断索引是否存在[/b]
HEAD twitter
httpcode404代表不存在,200代表存在[b]5打开关闭索引api[/b]
我们可以关闭或者开启索引的接口。当索引接口被关闭的时候不能对该索引进行读写操作。
POST /my_index/_close
POST /my_index/_open
当指定的索引不存在的时候回抛出异常[b]8创建新类型数据定义[/b]
在已有的索引上添加新类型或者对已有类型添加新的字段
PUT twitter
{
"mappings": {
"tweet": {
"properties": {
"message": {
"type": "text"
}
}
}
}
}
PUT twitter/_mapping/user
{
"properties": {
"name": {
"type": "text"
}
}
}
PUT twitter/_mapping/tweet
{
"properties": {
"user_name": {
"type": "text"
}
}
}
[b]9获取数据定义[/b]
获取某一类型的定义
GET /twitter/_mapping/tweet
获取多个类型的定义
GET /_mapping/tweet,kimchy
GET /_all/_mapping/tweet,book
获取所有定义
GET /_all/_mapping
GET /_mapping
[b]11type是否存在[/b]
查看某个索引下的类型是否存在
HEAD twitter/_mapping/tweet
[b]12索引别名[/b]
可以给索引添加别名,也可以给多个索引添加相同的别名
POST /_aliases
{
"actions" : [
{ "remove" : { "index" : "test1", "alias" : "alias1" } },
{ "add" : { "index" : "test2", "alias" : "alias1" } }
]
}
[b]13修改索引设置[/b]
可以通过http接口动态对索引进行设置。
设置备份为4
curl -XPUT 'localhost:9200/my_index/_settings' -d '
{
"index" : {
"number_of_replicas" : 4
}
}'
修改索引生效时间
curl -XPUT localhost:9200/test/_settings -d '{
"index" : {
"refresh_interval" : "-1"
} }'
[b]14获取索引设置[/b]
获取某个索引的设置
GET /twitter/_settings
其他一些写法
GET /twitter,kimchy/_settings
GET /_all/_settings
GET /log_2013_*/_settings
[b]15分析器[/b]
尝试各种分析器。如使用标准分析器分析一段话
curl -XGET 'localhost:9200/_analyze' -d '
{
"analyzer" : "standard",
"text" : "this is a test"
}'
如果传输的参数是数组,他会当做多值来分析(我没懂啥意思)curl -XGET 'localhost:9200/_analyze' -d '
{
"analyzer" : "standard",
"text" : ["this is a test", "the second text"]
}'
或者通过指定断词,词过滤器,字符过滤器来自己定义分析器。次过滤器可以使用简介词代替.
curl -XGET 'localhost:9200/_analyze' -d '
{
"tokenizer" : "keyword",
"filter" : ["lowercase"],
"text" : "this is a test"
}'
curl -XGET 'localhost:9200/_analyze' -d '
{
"tokenizer" : "keyword",
"filter" : ["lowercase"],
"char_filter" : ["html_strip"],
"text" : "this is a <b>test</b>"
}'
如果想要更相信的信息,可以添加参数explain参数(默认为false)。GET _analyze
{
"tokenizer" : "standard",
"filter" : ["snowball"],
"text" : "detailed output",
"explain" : true,
"attributes" : ["keyword"]
}
[b]16索引模板[/b]
用户可以自己定义索引模板(包括设置和定义),之后再使用的时候可以直接使用模板。修改模板不会对已有的创建有修改。例
PUT _template/template_1
{
"template": "te*",
"settings": {
"number_of_shards": 1
},
"mappings": {
"type1": {
"_source": {
"enabled": false
},
"properties": {
"host_name": {
"type": "keyword"
},
"created_at": {
"type": "date",
"format": "EEE MMM dd HH:mm:ss Z YYYY"
}
}
}
}
}
删除模板
DELETE /_template/template_1
获取模板
GET /_template/temp*
GET /_template/template_1,template_2
查看是否存在模板
HEAD _template/template_1
[b]18索引的统计信息[/b]
查看索引的统计信息
GET /index1,index2/_stats
[b]19索引分片[/b]
可以查看索引分片信息,对优化起到一定提示
curl -XGET 'http://localhost:9200/test/_segments'
curl -XGET 'http://localhost:9200/test1,test2/_segments'
curl -XGET 'http://localhost:9200/_segments'
为了调试希望展示更多的信息,可以添加verbose
curl -XGET 'http://localhost:9200/test/_segments?verbose=true'
[b]20索引恢复[/b]
提供索引修复的详细信息。如下会显示索引恢复信息
GET index1,index2/_recovery?human
如果想查看所有的索引恢复信息GET /_recovery?human
[b]21索引数据保存[/b]
获取数据节点保存信息。默认情况下之展示未分配的数据节点。当集群状态为黄色的时候展示至少有一个未分配的副本节点。当集群状态为红色的时候展示未分配的主节点。
curl -XGET 'http://localhost:9200/test/_shard_stores'
curl -XGET 'http://localhost:9200/test1,test2/_shard_stores'
curl -XGET 'http://localhost:9200/_shard_stores'
也可以通过参数status指定类型。如前面所讲共有三种green,yellow,red curl -XGET 'http://localhost:9200/_shard_stores?status=green'
[b]22清理缓存[/b]
清理缓存
POST /twitter/_cache/clear
默认清理所有缓存,也可以指定清理搜搜,数据元信息,请求信息。也可以清理多个索引的缓存信息POST /kimchy,elasticsearch/_cache/clear
POST /_cache/clear
[b]24刷新[/b]
默认是定时刷新(1秒)。es中的数据默认是存储在内存中的经过1秒后会被写入到文件系统缓存,这样文档就可以被搜索到了(这也是为什么es是近实时的原因)。以下可以强制刷新
POST /twitter/_refresh
也可以多个索引进行刷新POST /kimchy,elasticsearch/_refresh
POST /_refresh
[b]25合并分片[/b]
合并索引减少分片。合并属于阻塞操作。所有请求都会被阻塞住,直至合并完成。[code="java"]POST /twitter/_forcemerge
也可以传输参数max_num_segments:代表合并的段数。为了充分合并,可以设置为1.默认检查是否需要合并,如果需要则执行
only_expunge_deletes:是否只对删除的数据进行合并,默认为false。在lucene中。删除操作只是把文档标记为删除,并没有真实删除。
flush在执行玩合并之后是否执行刷新操作。默认为true
也可以对多个索引执行操作
POST /kimchy,elasticsearch/_forcemerge
POST /_forcemerge
[/code]