10个Elasticsearch查询的实用技巧分享
作者:不一样的科技宅 发布时间:2022-09-21 07:32:14
前言
Elasticsearch是一个非常流行的搜索引擎,已经成为了许多企业的首选解决方案。然而,我们要想成为一个优秀的程序员,就必须掌握各种查询技巧。本文将向大家介绍10个实用的Elasticsearch查询技巧,并配上对应的代码示例,帮助我们更好地掌握Elasticsearch的查询语法。
示例
1. 匹配多个词语
使用 bool 查询和 must 子句可以匹配多个词语。例如,匹配同时包含“apple”和“banana”的文档:
{
"query": {
"bool": {
"must": [
{ "match": { "text": "apple" }},
{ "match": { "text": "banana" }}
]
}
}
}
2. 匹配某个字段中的任意一个词
使用 terms 查询和字段名可以匹配某个字段中的任意一个词。例如,匹配 title 字段中包含“apple”或“banana”的文档:
{
"query": {
"terms": {
"title": ["apple", "banana"]
}
}
}
3. 匹配某个字段中的词语前缀
使用 prefix 查询和字段名可以匹配某个字段中的词语前缀。例如,匹配 title 字段中以“app”开头的文档:
{
"query": {
"prefix": {
"title": "app"
}
}
}
4. 匹配某个字段中的词语通配符
使用 wildcard 查询和字段名可以匹配某个字段中的词语通配符。例如,匹配 title 字段中包含“app”或“ban”的文档:
{
"query": {
"wildcard": {
"title": "*app* OR ban*"
}
}
}
5. 匹配某个字段中的词语模糊匹配
使用 fuzzy 查询和字段名可以进行词语模糊匹配。例如,匹配 title 字段中类似于“aple”的文档:
{
"query": {
"fuzzy": {
"title": "aple"
}
}
}
6. 匹配某个字段中的词语范围
使用 range 查询和字段名可以匹配某个字段中的词语范围。例如,匹配 price 字段在 10 到 100 之间的文档:
{
"query": {
"range": {
"price": {
"gte": 10,
"lte": 100
}
}
}
}
7. 匹配某个字段中的词语存在与否
使用 exists 查询和字段名可以匹配某个字段中的词语是否存在。例如,匹配包含 description 字段的文档:
{
"query": {
"exists": {
"field": "description"
}
}
}
8. 按照某个字段排序
使用 sort 参数可以按照某个字段进行排序。例如,按照 score 字段从高到低排序:
{
"query": {
"match_all": {}
},
"sort": [
{ "score": "desc" }
]
}
9. 返回某些字段的部分数据
使用_source 参数可以返回某些字段的部分数据。例如,只返回 title 和 price 字段的数据:
{
"query": {
"match_all": {}
},
"_source": ["title", "price"]
}
10. 进行分页操作
使用 from 和 size 参数可以进行分页操作。例如,返回第 11-20 条数据:
{
"query": {
"match_all": {}
},
"from": 10,
"size": 10
}
来源:https://juejin.cn/post/7223586933881061413


猜你喜欢
- 多选择结构switch语句 在java中为多路分支选择流程专门提供了switch语句,switch语句根据一个表达式的值,选择运行多个操作中
- 目录1、前提知识2、实现思路:1、前提知识需要知道简单的IO流操作,以及简单的UDP发送数据包的原理。需要用到的类:DatagramSock
- Android 中Activity 之间传递参数1.传递简单数据在A Activity中findViewById(R.id.startBAc
- 本文实例为大家分享了Android投票进度条的具体代码,供大家参考,具体内容如下效果展示功能属性介绍<!-- MatchSupport
- abstract可以用来修饰类,方法,属性,索引器和时间,这里不包括字段. 使用abstrac修饰的类,该类只能作为其他类的基类,不能实例化
- 开始用springboot2+hession4实现RPC服务时,发现第一个服务可以调用成功,但第二个就一直报'<'is
- 我们都知道,当RecyclerView数据源更新后,还需要通过adapter调用对应的方法,从而让RecyclerView重新绘制页面本次也
- 1、不要为抽象类提供公开的构造方法抽象类可以有构造方法,但是抽象类不能实例化。如果编程人员没有制定构造方法,编译器会自动生成一个默认的pro
- 最近刚写了一个网易客户端首页导航条的动画效果,现在分享出来给大家学习学习。我说一下这个效果的核心原理。下面是效果图: 首先是布局,
- 本文实例为大家分享了C#实现猜数字游戏具体代码,供大家参考,具体内容如下给定一个0-100的随机数字猜其大小题目样式:电脑产生一个0到100
- 效果展示人脸支付效果视频密码框输入支付效果视频因为密码支付时会调起系统安全键盘,开启自动保护功能,防止泄露,会导致输入密码时录屏黑屏,故使用
- 1. 添加程序集2. 引入命名空间using System.Management;3. 方法M
- 首先,我们看看Map架构。如上图:Map 是映射接口,Map中存储的内容是键值对(key-value)。AbstractMap 是继承于Ma
- 在 Eclipse 里新建好工程后,默认会有一个assets目录,在 Eclipse 中直接将准备好的 SQLite 数据库复制到该目录中,
- 不依赖任何外界包,maven如何生成可以执行的jar?pom中不包含任何引用的情况下,只需要在pom中添加 maven-jar-plugin
- 本次内容主要介绍基于Ehcache 3.0来快速实现Spring Boot应用程序的数据缓存功能。在Spring Boot应用程序中,我们可
- Android资源文件大致可以分为两种:第一种是res目录下存放的可编译的资源文件:这种资源文件系统会在R.java里面自动生成该资源文件的
- 记住我功能原理分析还记得前面咱们分析认证流程时,提到的记住我功能吗?现在继续跟踪找到AbstractRememberMeServices对象
- 前言真的一秒就可以实现么?是的,因为我们直接复制粘贴工具类拿来用就可以。 工具类 WaterMarkUtil.java&
- 前言:学习二叉树的基本操作前,需要先创建一颗二叉树,然后才能学习其相关的基本操作,考虑到我们刚刚接触二叉树,为了能够先易后难地进行讲解,我们