一、
环境:ES 7.6.x 、kibana
一、关于索引的基本操作
1.创建一个索引
PUT /索引/~类型名/文档id
put /test1/user/1
{
"name":"xiaoyi",
"age":3
]
2.指定字段类型
put /test1
{
"mappings": {
"properties": {
"name": {
"type": "text"
},
"age": {
"type": "long"
},
"birthday": {
"type": "date"
}
}
}
}
3.查看默认信息
get test1
4.修改数据
post /test1/_doc/1/_update
{
"doc":{
"name":"xiaoyiyi"
}
}
5.删除索引
delete test1
二、关于文档的基本操作
1.添加数据
PUT /test1/user/1
{
"name": "xiaoyi",
"age": 3,
"desc": "全干工程师",
"tags": ["技术宅","温暖","直男"]
}
2.获取数据
get test1/user/1
3.更新数据
更新1:
PUT /test1/user/1
{
"name": "xiaoyi1",
"age": 30,
"desc": "用这种方式更新,假如没有写tags的内容,则更新后tags为空!",
"tags": ["美女","旅游","唱歌"]
}
更新2:
POST test1/user/1/_update
{
"doc":{
"name": “xiaoyi11"
}
}
4.查询数据
get test1/user/_search?q=name:xiaoyi
三、复杂查询
1.查询query、排序sort、分页
GET test1/user/_search
{
"query": { #查询
"match": {
"name": "xiaoyi"
}
},
"sort": [ #排序
{
"age": {
"order": "asc"
}
}
],
"from": 0, #分页:从第几条开始
"size": 10 #返回多少条数据(单页面数据)
}
2.布尔值查询
1.多条件查询must(相当于and)
GET test1/user/_search
{
"query":{
"bool":{ #布尔值查询
"must":[ #多条件查询,must相当于and
{
"match":{
"name":"xiaoyi"
}
},
{
"match":{
"age":23
}
}
]
}
}
}
2.或should查询(相当于or)
GET test1/user/_search
{
"query":{
"bool":{ #布尔值查询
"should":[ #should相当于or
{
"match":{
"name":"xiaoyi"
}
},
{
"match":{
"age":23
}
}
]
}
}
}
3.非查询must_not
GET test1/user/_search
{
"query":{
"bool":{ #布尔值查询
"must_not":[ #查询年龄不是23岁的
{
"match":{
"age":23
}
}
]
}
}
}
4.过滤查询
- gt:大于
- gte:大于等于
- lt:小于
- lte:小于等于
GET test1/user/_search
{
"query":{
"bool":{ #布尔值查询
"must":[ #多条件查询,must相当于and
{
"match":{
"name":"xiaoyi"
}
}
],
"filter":{ #查询年龄小于10岁的
"range":{
"age":{
"lt":10
}
}
}
}
}
}
3.匹配查询
多个条件使用空格隔开,只要满足其中一个结果既可以被查出,这个时候可以通过分值基本的判断
GET test1/user/_search
{
"query":{
"match":{
"tags":"男 技术“
}
}
}
4.精确查询
analyzer:"keyword"
analyzer:"standard"
keyword字段类型不会被分词器解析。
精确查询多个值:
GET test1/_search
{
"query":{
"bool":{ #布尔值查询
"should":[ #should相当于or
{
"term":{
"t1":"22"
}
},
{
"term":{
"t2":"33"
}
}
]
}
}
}
5.高亮查询
搜索的相关结果高亮显示!
GET test1/user/_search
{
"query":{
"match":{
"name":"xiaoyi"
}
},
"highlight":{
"fields":{
"name"{}
}
}
}
自定义搜索高亮显示:(就是自定义标签)
GET test1/_search
{
"query":{
"match":{
"name":"xiaoyi"
}
},
"highlight":{
"pre_tags":"<p class='key' style='color:red'>",
"post_tags":"</p>",
"fields":{
"name":{}
}
}
}