es的默认配置是不需要我们手动配置索引的(如果我们索引数据到一个不存在的索引上面,es会自动的创建该索引。)。但是,为了控制例如,索引的分片数,副本数。。。等等,我们还是需要手动进行配置的。
索引配置
关闭es默认创建索引
通过再config/elasticsearch.yml 的每个节点下面添加下面的配置项,来关闭自动创建索引。
action.auto_create_index: false
配置索引
基本格式
es的索引模板大概是这个样子的
PUT /my_index // 使用put方法,创建一个名为my_index 的索引
{
"settings": { ... any settings ... }, //具体的配置项
"mappings": { //mappings里面可以配置多个类型,当我们搜索时,我们可以同时指定索引与类型
"type_one": { ... any mappings ... },
"type_two": { ... any mappings ... },
...
}
}
es 使用REST api 来与用户进行交互,用http的四种方法,来进行创建、删除、更新、获取。
put - 创建 delete - 删除 post - 更新 get - 获取
- my_index 创建的索引名字
- settings 里面包含了我们的具体配置,分片数,分析器,副本数等等。。。
- mappings: 里面可以 同时包含多个类型 ,es的存储架构是索引/类型/文档, 当我们搜索时我们可以指定具体的类型,进行精确搜索,但这并不是必须的,当我们不能确定文档再哪个类型中的时候,我们只指定索引就可以了。
- 具体的配置,后面慢慢说。
分片和副本
curl -XPUT 'localhost:9200/my_temp_index?pretty' -H 'Content-Type: application/json' -d'
{
"settings": {
"number_of_shards" : 1,
"number_of_replicas" : 0
}
}
'
- 创建索引的时候指定配置
number_of_shards分片的数量,索引建立之后不可更改,除非删除重建-
number_of_replicas副本的数量,可以通过rest api动态修改curl -XPUT 'localhost:9200/my_temp_index/_settings?pretty' -H 'Content-Type: application/json' -d' { "number_of_replicas": 1 } '
索引操作
删除索引
- 具体删除
CURL -DELETE /my_index - 删除多个
CURL -DELETE /index_one, index_two - 通配符删除, 以
index_开头的索引CURL -DELETE /index_* - 删除全部索引
CURL -DELETE /_allorCURL -DELETE /*
查看索引
curl -XGET 'localhost:9200/index_name?pretty'
pretty 表示美化输出,更易于查看
curl -XGET 'localhost:9200/index_name/options?pretty'options 包括_settings,mappings,_aliases
索引是否存在
curl -XHEAD 'localhost:9200/index_name?pretty' 判断指定的索引是存在
// 不存在
HTTP/1.1 404 Not Found
content-type: application/json; charset=UTF-8
content-length: 512
索引的开启与关闭
通过下面两个api进行开启与关闭
curl -XPOST 'localhost:9200/index_name/_close' # 关闭索引
curl -XPOST 'localhost:9200/index_name/_close' # 开启索引
- 这个操作同样支持,关闭多个,或者所有,但是操作不存的索引会抛出错误,可以通过参数
ignore_unavailable=true来忽略掉。 - 这个操作可能会带来管理空间的问题,如果想禁止通过api来操作,可以使用配置参数
cluster.indices.close.enable为false来禁止使用, 默认值是true。