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为的文档,且只返回name和age信息

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

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

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

name必须包含小和明的文档数据

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

所有addree必须包含mill和lane

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

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

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

age属性为,并且state属性不为2

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

查询年龄大于小于的学生

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": ,
"timed_out": false,
"_shards": {
"total": ,
"successful": ,
"skipped": ,
"failed":
},
"hits": {
"total": ,
"max_score": ,
"hits": []
},
"aggregations": {
"min_fees": {
"value":
}
}
}

求年龄总和

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

全文检索-Elasticsearch (三) DSL的更多相关文章

  1. Elasticsearch Query DSL 整理总结(二)—— 要搞懂 Match Query,看这篇就够了

    目录 引言 构建示例 match operator 参数 analyzer lenient 参数 Fuzziness fuzzniess 参数 什么是模糊搜索? Levenshtein Edit Di ...

  2. ElasticSearch实战系列二: ElasticSearch的DSL语句使用教程---图文详解

    前言 在上一篇中介绍了ElasticSearch集群和kinaba的安装教程,本篇文章就来讲解下 ElasticSearch的DSL语句使用. ElasticSearch DSL 介绍 Elastic ...

  3. Elasticsearch Query DSL

    Elasticsearch Query DSL By:授客 QQ:1033553122 1. match_all 1 2. match 2 3. match_phrase 5 4. match_phr ...

  4. Elasticsearch Query DSL 整理总结(一)—— Query DSL 概要,MatchAllQuery,全文查询简述

    目录 引言 概要 Query and filter context Match All Query 全文查询 Full text queries 小结 参考文档 引言 虽然之前做过 elasticse ...

  5. Elasticsearch Query DSL(查询语言)

    章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...

  6. Elasticsearch常用DSL关键字

    Elasticsearch常用DSL关键字 query: 用于包含查询使用到的语法 match_all: 最简单的查询,获取索引所有数据,类似搜索 *.如:"query":{&qu ...

  7. Elasticsearch Query DSL 整理总结(三)—— Match Phrase Query 和 Match Phrase Prefix Query

    目录 引言 Match Phase Query slop 参数 analyzer 参数 zero terms query Match Phrase 前缀查询 max_expansions 小结 参考文 ...

  8. 全文检索-Elasticsearch (四) elasticsearch.net 客户端

    本篇摘自elasticsearch.net search入门使用指南中文版(翻译) 原文:http://edu.dmeiyang.com/book/nestusing.html elasticsear ...

  9. Elasticsearch Query DSL备忘(1)(Constant score query和Bool Query)

    Query DSL (Domain Specific Language),基于json的查询方式 1.Constant score query,常量分值查询,目的就是返回指定的score,一般都结合f ...

随机推荐

  1. logrus_hook.go

    package) //表示自身栈中跳过6个,:]     entry.Data["file"] = fileName     entry.Data["func" ...

  2. ConcurrentLinkedQueue简介

    ConcurrentLinkedQueue是一个基于链表的无界线程安全队列,非阻塞实现方式,先进先出,适合高并发的场景. 非阻塞的性能较好,采用CAS,避免加锁的时间,保证数据一致性. 采用" ...

  3. .net core使用Ocelot+Identity Server统一网关验证

    源码下载地址:下载 项目结构如下图: 在Identity Server授权中,实现IResourceOwnerPasswordValidator接口: public class IdentityVal ...

  4. readonly 和 disabled的区别

    在开发的时候遇到了disabled不能传值的问题 但是readonly可以传值 学习源头: http://www.w3school.com.cn/tags/att_input_readonly.asp ...

  5. 从壹开始前后端分离 41 || Nginx+Github+PM2 快速部署项目(一)

    前言 哈喽大家周一好!今天是农历腊月二十三,小年开始,恭祝大家新年快乐(哈哈你五福了么

  6. Java:基于MD5的文件监听程序

    前述和需求说明 和之前写的 Python:基于MD5的文件监听程序 是同样的功能,就不啰嗦了,就是又写了一个java版本的,可以移步 python 版本去看一下,整个的核心思路是一样的.代码已上传Gi ...

  7. 什么是TensorFlow?

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 回顾前面: 从零开始学TensorFlow[01-搭 ...

  8. sun.misc jar包

    一直以来Base64算法的加密解密都是使用sun.misc包下的BASE64Encoder及BASE64Decoder来进行的.但是这个类是sun公司的内部方法,并没有在Java API中公开过,不属 ...

  9. JS常用正则表达式备忘录

    摘要: 玩转正则表达式. 原文:JS常用正则表达式备忘录 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 正则表达式或"regex"用于匹配字符串的各个部分 下面是 ...

  10. iOS----------Runtime 获取属性列表 方法列表

    导入 #import <objc/runtime.h> unsigned int count; Method *methods = class_copyMethodList([UIAler ...