增加索引
put /索引名
删除索引
delete /索引
查看所有索引
get /_cat/indices?v
查看集群状态
get /_cat/health?v
增加文档
put /index/type/id
其中type:_doc
查看文档
get /index/type/id
更新:
post /{index}/type/{id}/_update
post /{index}/_update/{id}
自动生成文档id
如果不加_create,就会直接覆盖掉,返回的json中,值是update
批量增删改bulk
es在保存文档时,会对文档进行规范化处理,建立倒排索引,查询时,将查询条件也进行规范化处理,然后从倒排索引里查询数据,然后再返回真正的数据
mapping:动态映射字段属性
get /索引/_mapping
搜索
创建索引后,应该立即手动创建映射
PUT book/_mapping
{
"properties": {
"name": {
"type": "text"
},
"description": {
"type": "text",
"analyzer":"english",
"search_analyzer":"english"
},
"pic":{
"type":"text",
"index":false
},
"studymodel":{
"type":"text"
}
}
}
Text 文本类型
1)analyzer
通过analyzer属性指定分词器。
上边指定了analyzer是指在索引和搜索都使用english,如果单独想定义搜索时使用的分词器则可以通过search_analyzer属性。
2)index ( keyword关键字字段, 目前已经取代了"index": false。)
index属性指定是否索引。
默认为index=true,即要进行索引,只有进行索引才可以从索引库搜索到。
但是也有一些内容不需要索引,比如:商品图片地址只被用来展示图片,不进行搜索图片,此时可以将index设置为false。
删除索引,重新创建映射,将pic的index设置为false,尝试根据pic去搜索,结果搜索不到数据。
3)store
是否在source之外存储,每个文档索引后会在 ES中保存一份原始文档,存放在"_source"中,一般情况下不需要设置store为true,因为在_source中已经有一份原始文档了。
只能创建index时手动建立mapping,或者新增field mapping,但是不能update field mapping。
10.9 复杂数据类型
10.9 .1 multivalue field
{ “tags”: [ “tag1”, “tag2” ]}
建立索引时与string是一样的,数据类型不能混
10.9 .2. empty field
null,[],[null]
10.9 .3. object field
PUT /company/_doc/1
{
"address": {
"country": "china",
"province": "guangdong",
"city": "guangzhou"
},
"name": "jack",
"age": 27,
"join_date": "2019-01-01"
}
创建索引,同时创建映射
PUT /index
{
"settings": { ... any settings ... },
"mappings": {
"properties" : {
"field1" : { "type" : "text" }
}
},
"aliases": {
"default_index": {}
}
}
修改索引
PUT /my_index/_settings
{
"index" : {
"number_of_replicas" : 2
}
}
为了安全起见,防止恶意删除索引,删除时必须指定索引名:
elasticsearch.yml
action.destructive_requires_name: true