ElasticSearch常用命令
今天敲了一遍常用命令,发现还是会忘。。。
目录
- 1.创建索引
- 2.添加索引结构
- 3.查看索引结构
- 4.删除索引
- 5.添加(文档)数据
- 6.根ID获得文档数据
- 7.根据ID修改文档数据(PUT方式,不推荐)
- 8.根据ID修改文档数据(post方式,推荐)
- 9.根据ID删除
- 10.单一字段查询,如果查询字段类型都具备(方式一)
- 11.单一字段查询(方式二)
- 12.term(精确搜索)查询
- 下面是多字段查询
- 13.must(and查询),可理解为 select * from users where remark like '%备注%' and age like '%15%'
- 14. should(or查询)可理解为 select * from users where remark = '备注' or age = '15'
- 15. must_not(!=)可理解为 select * from users where remark != '备注' and age != '15'
- 16.区间查询 理解理解为 select * from users where remark like '%李四%' and age >=16 and age <=17
- 17.指定返回某些字段
- 18.排序 同事搜索“的备注”、“张三”,并先按照age字段降序,再按照_score分值字段降序排列
- 19.高亮
- 20.分页查询
- 其他:查看索引的相关信息
1.创建索引
PUT users
{
"mappings": {
"properties": {
"name":{
"type": "keyword"
},
"age":{
"type": "integer"
},
"remark":{
"type": "text"
}
}
}
}
2.添加索引结构
PUT users/_mapping
{
"properties": {
"content1":{
"type": "keyword"
},
"content2":{
"type": "keyword"
}
}
}
3.查看索引结构
GET users
4.删除索引
DELETE users
以上是索引的基本操作命令
5.添加(文档)数据
PUT users/_doc/1
{
"age":15,
"name":"张三的名字叫张三",
"remark":"张三的备注",
"content":"张三的content"
}
6.根ID获得文档数据
GET users/_doc/1
7.根据ID修改文档数据(PUT方式,不推荐)
PUT users/_doc/1
{
"age":16
}
8.根据ID修改文档数据(post方式,推荐)
POST users/_doc/1
{
"doc":{
"age":15,
"name":"张三的名字",
"remark":"张三的备注"
}
}
9.根据ID删除
DELETE users/_doc/1
以上是文档的基本操作命令
多创建一些文档,方便下面的复杂查询
PUT users/_doc/2
{
"age":16,
"name":"李四的名字叫李四",
"remark":"李四的备注",
"content":"李四的content"
}
PUT users/_doc/3
{
"age":17,
"name":"王五的名字叫王五",
"remark":"王五的备注",
"content":"王五的content"
}
PUT users/_doc/4
{
"age":18,
"name":"赵六的名字叫赵六",
"remark":"赵六的备注",
"content":"赵六的content"
}
PUT users/_doc/5
{
"age":18,
"name":"阿三的名字叫赵六",
"remark":"阿三的备注",
"content":"阿三的content"
}
10.单一字段查询,如果查询字段类型都具备(方式一)
GET users/_doc/_search?q=name:张三#如果是自动创建的索引,文本的字段会同时创建两种类型,text\keyword,按照这个查询方式查询,会先将name进行分词后查询
GET users/_doc/_search?q=name.keyword:张三#按照这个查询方式查询,不会先将name进行分词直接查询
11.单一字段查询(方式二)
GET users/_doc/_search
{
"query":{
"match":{
"remark":"备注" 按照这个查询方式查询,会先将name进行分词后查询
#"remark.keyword":"李0的备注" 按照这个查询方式查询,不会先将name进行分词直接查询
}
}
}
12.term(精确搜索)查询
如果字段是手动指定的text,则查不出来,如果是自动创建的,可以使用"age.keyword":15查询
GET users/_doc/_search
{
"query":
{
"term":{
"age":15
}
}
}
以上是文档一个字段查询的基本操作命令
下面是多字段查询
13.must(and查询),可理解为 select * from users where remark like '%备注%' and age like '%15%'
其中下面用到的term和match可以根据需求变换
GET users/_doc/_search
{
"query":{
"bool":{
"must":[
{
"term":
{
"name":"张三的名字叫张三"
}
} ,
{
"match":
{
"age":"15"
}
}
]
}
}
}
14. should(or查询)可理解为 select * from users where remark = '备注' or age = '15'
GET users/_doc/_search
{
"query":{
"bool":{
"should":[
{
"term":{
"name":"张三的名字叫张三"
}
},
{
"term":{
"age":16
}
}
]
}
}
}
15. must_not(!=)可理解为 select * from users where remark != '备注' and age != '15'
GET users/_doc/_search
{
"query":{
"bool":{
"must_not": [
{
"term":{
"name":"张三的名字叫张三"
}
},
{
"term":{
"age":17
}
}
]
}
}
}
16.区间查询 理解理解为 select * from users where remark like '%李四%' and age >=16 and age <=17
gt 大于
gte 大于等于
lt 小于
lte 小于等于!
GET users/_doc/_search
{
"query":{
"bool":{
"must":{
"match":{
"remark":"李四"
}
},
"filter":{
"range":{
"age":{
"gte":16,
"lte":17
}
}
}
}
}
}
17.指定返回某些字段
GET users/_doc/_search
{
"_source":["age"]
}
18.排序 同事搜索“的备注”、“张三”,并先按照age字段降序,再按照_score分值字段降序排列
GET users/_doc/_search
{
"query":{
"bool":{
"must":{
"match":{
"remark":"的备注 张三"
}
}
}
},
"sort":[
{
"age":"desc"
},
{
"_score":"desc"
}
]
}
19.高亮
pre_tags:为查找的关键字添加自定义的html代码前缀
post_tags:为查找的关键字添加自定义的html代码后缀
fields:定义要高亮的字段
GET users/_doc/_search
{
"query":{
"bool":{
"must":[
{
"match":{
"remark":"的备注"
}
},
{
"match":{
"content":"张三"
}
}
]
}
},
"highlight":{
"pre_tags":"<mytag style='color:red'>",
"post_tags":"</mytag>",
"fields":[
{
"remark":{}
},
{
"content":{}
}
]
}
}
20.分页查询
from:从第几条数据开始(>关系,非>=)
size:查询几条数据
GET users/_doc/_search
{
"from:":2,
"size":2
}
其他:查看索引的相关信息
可以查出来每个索引使用的空间大小,记录数等信息
GET _cat/indices?v