ElasticSearch 查询语法

2023-10-26

环境

  • ElasticSearch6.4.2
  • 以下查询请求方式均为Post
  • 索引名:book
  • 索引结构:
{
	"mappings": {
		"novel": {
			"properties": {
				"word_count": {
					"type": "interger"
				},
				"author": {
					"type": "keyword"
				},
				"title": {
					"type": "text"
				},
				"publish_date": {
					"format": "yyyy-MM-dd HH:mm:ss||yyy-MM-dd||epoch_mills",
					"type": "date"
				}
			}
		}
	}
}

基本查询

查询全部

form指定从哪里返回
size指定返回数量

{
	"query": {
		"match_all": {}
		}
		"from": 1 
		"size": 1 
}

关键词查询

  • url:~/_search
  • 在title中匹关键词joker, 并按照出场日期的降序排序
{
	"query": {
		"match": {
			"title": "joker"
		},
		"sort": [
			{"publish_date":{"order":"desc}}
		]
	}
}

聚合查询

  • 分别根据word_count字段和publish_date字段分组聚合查询,实际上就是统计同样字数的有几本书,同样出版日期的又有几本书。
{
	"aggs": {
		"group_by_word_count": {
			"terms": {
				"field": "word_count"
			}
		},
		"group_by_publish_date": {
			"term": {
				"field": "publish_date"
			}
		}
	}
}
  • 计算word_count字段的总数,最小值,最大值,平均值,总和。
  • 分别对应count,min,max,avg,sum。将stats替换为以上单词则查询只对应结果。
{
	"aggs": {
		"grades_word_count": {
			"stats": {
				"field": "word_count"
			}
		}
	}
}

高级查询

子条件查询

特定字段查询所指特定值

Query Context

会根据匹配程度生成不同的匹配分数

全文本查询 针对文本类型
  • 模糊匹配
    • 根据title模糊匹配“ElasticSearch入门”
{
	"query": {
		"match": {
			"title": "ElasticSearch入门"
		}
	}
}
  • 词语匹配
    • 把“ElasticSearch入门”当作一个词语匹配
{
	"query": {
		"match_phrase": {
			"title": "ElasticSearch入门"
		}
	}
}
  • 多个字段模糊匹配查询
    • 在author和title字段中模糊匹配joker
    • 适用于单关键词多字段查询
{
	"query": {
		"multi_match": {
			"query": "joker"
			"fields": ["author", "title"]
		}
	}
}
  • 语法查询
    • 在title和author字段中匹配,其中某个字段需同时含有‘ElasticSearch’和’大法’,或者含有’Python’
    • 适用于多关键词多字段查询
{
	"query": {
		"query_string": {
			"query": "(ElasticSearch AND 大法) OR Python",
			"fields": ["title", "author"]
		}
	}
}
字段级别查询 针对结构化数据:数字,日期等。
  • 查询字段word_count为1000的数据
{
	"query": {
		"term": {
			"word_count": 1000 
		}
	}
}
  • 查询字段word_count大于等于1000小于2000的数据
{
	"query": {
		"range": {
			"word_count": {
				"gte": 1000,
				"lg": 2000
			}
		}
	}
}
  • 查询字段publish_date从2018-1-1到现在的的数据
{
	"query": {
		"range": {
			"publish_date": {
				"gte": "2018-1-1",
				"lg": "now"
			}
		}
	}
}
Filter Context

只判断该文档是否满足条件,只有是或者不是
而且Filter的结果会加入缓存,比Query快一些

{
	"query": {
		"bool": {
			"filter": {
				"term": {
					"word_count": 1000
				}
			}
		}
	}
}

常用复合条件查询

以一定的逻辑组合子条件查询

  • 固定分数查询
    模糊匹配ElasticSearch, 查询出所有匹配分数都为2,由boost指定,默认为1
    只支持Filter查询
{
	"query": {
		"constant_score": {
			"filter": {
				"match": {
					"title": "ElasticSearch"
				}
			}
		}, 
		"boost": 2
	}
}
  • 布尔查询
    should是模糊匹配,must, must_not为精确匹配
    filter指定过滤条件,word_count必须为1000
{
	"query": {
		"bool": {
			"must": [
				{
					"match": {
						"title": "joker"
					},
					"match": {
						"title": "ElasticSearch"
					}
				}
			],
			"filter": [
				"term": {
					"word_count": 1000
				}
			]
		}
	}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ElasticSearch 查询语法 的相关文章

随机推荐

  • PCL RANSAC 拟合直线

    RANSAC拟合直线 一 算法原理 1 算法简介 2 直线拟合 3 模型系数 4 参考文献 二 代码实现 三 结果展示 四 python代码 一 算法原理 1 算法简介 RANSAC算法由Fischler和Bolles于1981年提出 是一
  • linux下mysql写中文变成问号_如何解决数据库插入中文字体时显示问号

    欢迎点击 算法与编程之美 关注我们 本文首发于微信公众号 算法与编程之美 欢迎关注 及时了解更多此系列文章 问题描述 我们在进行数据库的增删改查的操作时 当我们插入英文或者数字等字符串的时候能够正常显示 但的当我们插入中文字体的时候我们就会
  • 火狐解决OCSP回应包含过期信息的问题

    连接 addons mozilla org 时发生错误 OCSP 回应包含过期信息 错误码 sec error ocsp old response hosts文件添加 vi etc hosts 117 18 237 29 ocsp digi
  • 马云的一席话

    关于坚持 今天很残酷 明天更残酷 后天很美好 但是大多数人死在明天晚上 看不到后天的太阳 所谓坚持成功 不是坚持 一直成功 而是坚持到 成功为止 关于创新 做任何事 必须要有突破 没有突破 就等于没做 行业饱和即意味危机来临 但巴菲特在股票
  • Java中JSON数据的读取和解析

    在做springboot项目时用到了json文件读取和解析 所以在这里记录一下学习过程中总结的一些点 希望对大家有帮助 配置fastJson
  • 超高清

    海思 HDR HDR行业面临巨大挑战 01 标准不统一 终端呈现效果参差不齐 HDR多种技术标准共存 缺少终端侧技术实现方案 标准间兼容性较差 不能覆盖主流终端的适配 认证及测试过程 导致终端呈现效果差距大 02 生态碎片化 部分技术方案专
  • Cordova 环境搭建+打包Android APK

    一 环境搭建 1 JDK 1 1 下载JDK http www oracle com technetwork java javase downloads jdk8 downloads 2133151 html 在上面的网址中选择符合自己操作
  • 正则表达式匹配案例

    匹配案例 1 判断变量的名称 由数字 字母 下划线组成 不能以数字作为开头 a zA Z a zA Z0 9 注意 如果不加 中间如果有不符合字符如abc 123就会匹配成功 import re result re match r a zA
  • 《ReactNative系列讲义》进阶篇---06.FlatList(三)

    版权声明 本文为博主原创文章 未经博主允许不得转载 一 简介 截止到上篇文章 关于FlatList无论是简单的还是高级的属性用法都已经介绍完毕 今天我们一起来看看FlatList更高级的玩法 相关方法的调用 二 基础知识 获取FlatLis
  • Elasticsearch的关键词搜索

    返回给前端的实体类 Data AllArgsConstructor NoArgsConstructor public class PageResult private Long total private List
  • el-table纵向垂直表头

    参考 https www jianshu com p 1f38eaffd070
  • facenet采坑之旅,主要记录一些用facenet过程中遇到的大大小小的问题

    问题1 Unable to run align dataset mtcnn py getting an attribute error module facenet has no attribute store revision info
  • 封装一个带el-form的,带el-table的,带分页的,带搜索查询的dialog组件,很使用的二次封装组件。

    封装dialog小案例 提示 这是我工作中封装的代码 很使用 需要的可以拿去 在我们的代码中往往会出现点击按钮出现弹窗进行操作 那么我们就需要对dialog进行一个二次封装 下边是大概的一个样式 对组件进行二次封装
  • burpsuite与sqlmap结合使用之CO2

    在使用sqlmap时 对一个页面进行注入时需要认证信息 如果将页面信息每次都保存到本地比较麻烦 使用命令行指令也需要cookie值 burpsuite中有一个快速sqlmap扫描的工具 CO2是一个burp插件 burp将拦截的请求直接发给
  • C++设计模式之适配器模式(adapter)(结构型)

    一 结构型模式概述 结构型模式 Structural Pattern 描述如何将类或者对象结合在一起形成更大的结构 就像搭积木 可以通过简单积木的组合形成复杂的 功能更为强大的结构 结构型模式可以分为类结构型模式和对象结构型模式 类结构型模
  • 低通,高通,带通,带阻滤波器的定义

    1 低通 Low pass filter 是容许低于截止频率的信号通过 但高于截止频率的信号不能通过的电子滤波装置 2 高通 是一种让某一频率以上的信号分量通过 而对该频率以下的信号分量大大抑制的电容 电感与电阻等器件的组合装置 其特性在时
  • 个人域名备案有什么要求?需要准备什么?

    现在域名是非常火爆的 越来越多的人开始注册域名 有个人域名 有企业域名 域名都是需要备案的 很多人不知道个人域名备案有哪些要求 需要准备些什么 下面我们一起来看看 个人域名备案的要求 1 国内主机都要求备案 2 网站访问者大多是国内人时国内
  • JDK的下载及配置JAVE_HOME

    初学JAVA的很多朋友的第一步就是下载JDK 首先 我来解释一下什么是JDK JDK是JAVA语言的软件开发工具包 目前已经到了JDK9的版本 在此提醒各位初学的朋友 下载JDK的话下载JDK8就够了 因为JDK9版本还不稳定 JDK就已经
  • 原生ajax 设置get请求参数和请求头信息和发送 post请求

    get请求发送参数直接在路径后面加问号即可 xhr open GET http 127 0 0 1 8000 server a 100 b 50 设置请求头信息 1 请求头中本来就有这个属性 只是修改该属性的值 xhr setRequest
  • ElasticSearch 查询语法

    环境 ElasticSearch6 4 2 以下查询请求方式均为Post 索引名 book 索引结构 mappings novel properties word count type interger author type keywor