Elasticsearch --- 常用操作

0.创建

PUT s1/doc/1
{
  "name":"张三",
  "age":"23",
  "sex":""
}

PUT s1/doc/2
{
  "name":"李四",
  "age":"30",
  "sex":""
}



PUT s1/doc/3
{
  "name":"小六",
  "age":"18",
  "sex":""
}


GET s1/doc/_search   #查询所有

GET s1/doc/1      #指定查询

 

1.两种条件查询方式

  ①字符串查询

GET s1/doc/_search?q=age:23

  ②结构化查询(DSL)

GET s1/doc/_search
{
  "query": {
    "match": {
      "age": "23"
    }
  }
}


GET s18/doc/_search   #查询所有
{
"query": {
"match_all": {}
}
}

2.修改指定字段

#只修改文档1中的 "age" ,其他不变

POST s1/doc/1/_update { "doc":{ "age":25 } }

3.排序sort

#降序

GET s1/doc/_search { "query": { "match_all": {} }, "sort": [ { "age": { "order": "desc" } } ] }
#升序

GET s1/doc/_search { "query": { "match_all": {} }, "sort": [ { "age": { "order": "asc" } } ] }

4.分页

#按索引从1的位置开始查,查2个

GET s1/doc/_search { "query": { "match_all": {} }, "from": 1, "size": 2 }
扫描二维码关注公众号,回复: 6262025 查看本文章

5.布尔查询:

  1.should(or),must(and),must_not(not)

#①查询姓名是"张三",或者年龄是"18"的

GET s1/doc/_search { "query": { "bool": { "should": [ { "match": { "name": "张三" } }, { "match": { "age": "18" } } ] } } }
#②查询出年龄是30的男性

GET s1/doc/_search { "query": { "bool": { "must": [ { "match": { "sex": "" } }, { "match": { "age": "30" } } ] } } }
#③查询出既不是男性,又不是30岁的

GET s1/doc/_search { "query": { "bool": { "must_not": [ { "match": { "sex": "" } }, { "match": { "age": "30" } } ] } } }

  2.大于(gt),大于等于(gte),小于(lt),小于等于(lte)

#①大于(其他类似)
查询大于25岁的男性

GET s1/doc/_search { "query": { "bool": { "must": [ { "match": { "sex": "" } } ], "filter": { "range": { "age": { "gt": 25 } } } } } }
#②查询小于25岁的非男性

GET s1/doc/_search { "query": { "bool": { "must_not": [ { "match": { "sex": "" } } ], "filter": { "range": { "age": { "lt": 25 } } } } } }

6.高亮查询


PUT s2/doc/1 { "name":"wangdi", "desc": "骚的打漂" } GET s2/doc/_search { "query": { "match": { "desc": "打漂" } }, "highlight": { #高亮显示查询的结果 "pre_tags": "<b style='color:red;font-size:20px;' class='wangdi'>", "post_tags": "</b>", "fields": { "desc": {} } } }

7.结果过滤

#①只将结果的姓名显示

GET s1/doc/_search { "query": { "match": { "name": "张三" } }, "_source": "name" }
#②将结果的姓名和年龄显示

GET s1/doc/_search { "query": { "match": { "name": "张三" } }, "_source": ["name","age"] }

8.聚合查询(sum,max,min,avg)

求男性的年龄总和

GET s1/doc/_search { "query": { "match": { "sex": "" } }, "aggs":{ "my_sum":{ "sum": { "field": "age" } } } }
求男性的最大值

GET s1/doc/_search { "query": { "match": { "sex": "" } }, "aggs":{ "my_max":{ "max": { "field": "age" } } } }
# 求所有人的平均值 avg
GET s1/doc/_search
{
  "aggs": {
    "my_avg": {
      "avg": {
        "field": "age"
      }
    }
  }
}

9.分组

#根据年龄,10-20,,20-30, 30-50 进行分组


GET s1/doc/_search { "aggs": { "my_group":{ "range": { "field": "age", "ranges": [ { "from": 10, "to": 20 }, { "from": 20, "to": 30 }, { "from": 30, "to": 50 } ] } } } }
对分组结果进行求和


GET s1/doc/_search { "aggs": { "my_group":{ "range": { "field": "age", "ranges": [ { "from": 10, "to": 20 }, { "from": 20, "to": 30 }, { "from": 30, "to": 50 } ] }, "aggs":{   "my_sum":{   "sum":{ "field":"age" } } } } } }

猜你喜欢

转载自www.cnblogs.com/sc-1067178406/p/10901438.html
今日推荐