博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
全文检索-Elasticsearch (三) DSL
阅读量:4669 次
发布时间:2019-06-09

本文共 2294 字,大约阅读时间需要 7 分钟。

DSL:elasticsearch查询语言
elasticsearch对json 的语法有严格的要求,每个json串不能换行,同时一个json串和一个json串之间,必须有一个换行

DSL(介绍查询语言)

下面示例省略了HTTP请求GET /bank/_search

  • 查询所有,按age升序

{

  "query": {
    "match_all": {}
  },
  "sort": {
    "age": "asc"
  },
  "from": 10,
  "size": 10
}

match_all :部分简单指定了我们想去执行的查询类型,意思就是在索引中搜索所有的文档。

sort:指定搜索结果的顺序
size:指定返回的结果数量,size没有指定,它默认为10
from:(从0开始)指定了从哪个文档索引开始

  • match 查询

基本的属性搜索查询(就是通过特定的一个或多个属性来搜索),没有知道哪个索引,全文搜索

查询age为15的文档,且只返回nameage信息

{   "query":{      "match" : {         "age":"15"      }   },   "_source": ["name", "age"]}

name字段包含小明或者小东的数据

{  "query": { "match": { "name": "小明 小东" } }}

name必须包含的文档数据

{  "query": { "match_phrase": { "name": "小 明" } }}
  • bool查询

所有addree必须包含milllane

{  "query": {    "bool": {      "must": [        { "match": { "address": "mill" } },        { "match": { "address": "lane" } }      ]    }  }}

 所有address属性中包含 “mill”  “lane” 的账户文档

{  "query": {    "bool": {      "should": [        { "match": { "address": "mill" } },        { "match": { "address": "lane" } }      ]    }  }}

age属性为40并且state属性为2

{  "query": {    "bool": {      "must": [        { "match": { "age": "40" } }      ],      "must_not": [        { "match": { "state": "2" } }      ]    }  }}
  • 过滤

查询年龄大于20小于25的学生

curl -XGET 'localhost:9200/students/_search?pretty' -H 'Content-Type: application/json' -d'{  "query": {    "bool": {      "must": { "match_all": {} },      "filter": {        "range": {          "age": {            "gte": 20,            "lte": 25          }        }      }    }  }}'

聚合

聚合可以分组并统计数据,类似SQL的GROUP BY操作和SQL的聚合函数;同时聚合可以嵌套

可以返回搜索结果和聚合结果

统计每个年龄断的人数

curl -XGET 'localhost:9200/students/_search?' {
"size": 0,#返回0条搜索结果,只返回聚合结果 "aggs": { "group_by_state": { "terms": { "field": "age" } } }}

搜索最小年龄

{    "size": 0,   "aggs" : {      "min_fees" : { "min" : { "field" : "age" } }   }}

返回的结果:

{    "took": 8,    "timed_out": false,    "_shards": {        "total": 5,        "successful": 5,        "skipped": 0,        "failed": 0    },    "hits": {        "total": 3,        "max_score": 0,        "hits": []    },    "aggregations": {        "min_fees": {            "value": 12        }    }}
View Code

求年龄总和

{   "aggs" : {      "total_fees" : { "sum" : { "field" : "age" } }   }}

 

转载于:https://www.cnblogs.com/qiuguochao/p/9080555.html

你可能感兴趣的文章
grep运用
查看>>
logstash收集syslog日志
查看>>
jenkins修改数据存放路径
查看>>
poj2481树状数组解二维偏序
查看>>
软件工程网络15个人阅读作业1(201521123062 杨钧宇)
查看>>
根据控制点坐标对完成坐标转换
查看>>
Boost.ASIO简要分析-4 多线程
查看>>
java调用支付宝接口代码介绍
查看>>
安装apache 后,找不到服务,解决办法
查看>>
【洛谷 T47488】 D:希望 (点分治)
查看>>
spring-MVC访问静态资源
查看>>
JavaScript异步加载与同步加载
查看>>
Eclipse搭建springboot项目(六)全局异常
查看>>
Android 报错:error: too many padding sections on bottom border
查看>>
IOS开发 ios7适配
查看>>
1806. [NOIP2014]无线网路发射器选址
查看>>
根据指定的commit查找对应的log
查看>>
处理和引发事件的规范
查看>>
点击LinearLayout使用selector改变TextView字体颜色
查看>>
Markdown入门指南-指间阁
查看>>