3. Elasticsearch 索引基本操作
引言
上一篇教大家安装了Elasticsearch-head插件和kibana可视化分析工具,今天就教大家在kibana的dev-tool里的控制台中如何操作索引
基础概念
索引(index)
索引(index)是elasticsearch的一个逻辑存储,可以理解为关系型数据库中的数据库,es可以把索引数据存放到一台服务器上,也可以sharding后存到多台服务器上,每个索引有一个或多个分片(扩容),每个分片可以有多个副本(容错)。
索引类型(index_type)
在es中,一个索引对象可以存储多个不同用途的对象,通过索引类型(index_type)可以区分单个索引中的不同对象,可以理解为关系型数据库中的表。每个索引类型可以有不同的结构,但是不同的索引类型不能为相同的属性设置不同的类型。
在elasticsearch高版本中,type的概念会逐渐被取消,大家只要记住:一个索引可以对应多个type。
文档(document)
存储在es中的主要实体叫文档(document),可以理解为关系型数据库中表的一行记录。每个文档由多个字段构成,es是一个非结构化的数据库,同一个索引之下,每个文档可以有不同的字段,并且有一个唯一的标识符。
映射(mapping):
ES默认是动态创建索引和索引类型的mapping的。这就相当于无需定义Solr中的Schema,无需指定各个字段的索引规则就可以索引文件,很方便。但有时方便就代表着不灵活。比如,ES默认一个字段是要做分词的,但我们有时要搜索匹配整个字段却不行。如有统计工作要记录每个城市出现的次数。对于NAME字段,若记录“new york”文本,ES可能会把它拆分成“new”和“york”这两个词,分别计算这个两个单词的次数,而不是我们期望的“new york”。
索引操作
Kibana中Dev Tools的控制台里,分为输入区和结果显示区,我们输入命令后,点击运行按钮,即可将请求发至Elasticsearch Server,Elasticsearch根据请求返回相应的结果
查看索引
##查看ES中的所有索引
GET /_cat/indices
创建索引
在创建的时候,指定分片数量和副本数量,和其mapping(可以暂时把它理解为数据结构)
其数据结构如下
field | type |
---|---|
name | text |
sex | int |
age | int |
birthday | int |
PUT /my_index
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 2
},
"mappings": {
"properties": {
"name":{
"type": "text"
},
"sex":{
"type": "long"
},
"age":{
"type": "long"
},
"birthday":{
"type": "date" }
}
}
}
删除索引
##指定index名称
DELETE /my_index
更新索引
同创建索引一样
插入document
POST /my_index/_doc/1
{
"name": "stono",
"sex": 1,
"age": 18,
"birthday": "1999-11-11"
}