ES最主要是用来做搜索和分析的。所以DSL还是对于ES很重要的
DSL:domain Specialed Lanaguage 在特定领域的语言
1:全表查询(match_all)
GET /demo_test_dev/_search
{
"query": {
"match_all": {}
}
}
2:条件查询 (match)
根据条件在es中倒排索引分词查询,会把包含查询条件的数据也查询出来
GET /demo_test_dev/_search
{
"query": {
"match": {
"name": "yjw"
}
}
}
3:排序 (sort)
对查询出来的数据排序,跟mysql的排序一样;
因为是对结果集排序,所以是在query同一级
GET /demo_test_dev/_search
{
"query": {
"match": {
"phone": "18210408839"
}
},
"sort": [
{
"age": {
"order": "desc"
}
}
]
}
4:分页 (from,size)
对查询结果集进行分页,在query同一级
from:从第几个数据开始
size:每页数据的个数
GET /demo_test_dev/_search
{
"query": {
"match": {
"phone": "18210408839"
}
},
"sort": [
{
"age": {
"order": "desc"
}
}
],
"from":0,
"size": 2
}
5:结果集返回指定字段 (_source)
在query同一级
"_source":["字段1","字段2",...]
GET /demo_test_dev/_search
{
"query": {
"match": {
"phone": "18210408839"
}
},
"sort": [
{
"age": {
"order": "desc"
}
}
],
"_source": ["name","age"],
"from":0,
"size": 2
}
6:多条件查询 (bool)
bool 过滤可以用来合并多个过滤条件查询结果的布尔逻辑,它包含以下操作符:
must:多个查询条件的完全匹配,相当于 and。
must_not:多个查询条件的相反匹配,相当于 not。
should:至少有一个查询条件匹配, 相当于 or。
这些参数可以分别继承一个过滤条件或者一个过滤条件的数组
GET /demo_test_dev/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"phone": "18210408839"
}
}
],
"must_not": [
{
"match": {
"sex": "男"
}
}
],
"should": [
{
"match": {
"age": "28"
}
},
{
"match": {
"age": "29"
}
}
]
}
}
}
7:聚合计算个数
如果不想显示出具体的数据内容,可以加上如下代码:
"size": 0,
GET /demo_test_dev/_search
{
"size": 0,
"aggs": {
"sex_group": {
"terms": {
"field": "sex.keyword",
"size": 10
}
}
}
}
8:聚合计算平均值 (avg)
GET /demo_test_dev/_search
{
"size": 0,
"aggs": {
"sex_group": {
"terms": {
"field": "sex.keyword",
"size": 10
},
"aggs": {
"avg_age": {
"avg": {
"field": "age"
}
}
}
}
}
}
9:聚合后排序 (order)
注意order的位置
GET /demo_test_dev/_search
{
"size": 0,
"aggs": {
"sex_group": {
"terms": {
"field": "sex.keyword",
"size": 10,
"order": {
"avg_age": "desc"
}
},
"aggs": {
"avg_age": {
"avg": {
"field": "age"
}
}
}
}
}
}
10:聚合按照区间分组 (range)
GET /demo_test_dev/_search
{
"size": 0,
"aggs": {
"age_group_range":{
"range": {
"field": "age",
"ranges": [
{
"from": 27,
"to": 28
},
{
"from": 28,
"to":29
}
]
}
}
}
}
想要了解更多精彩内容,请跳转官方文档查看
https://www.elastic.co/guide/cn/elasticsearch/guide/current/getting-started.html