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
猜你喜欢
- 数据库事务是被当作单个工作单元的操作序列。这些操作要么全部完成或全部不成功。事务管理是面向企业应用程序,以确保数据的完整性和一致性RDBMS
- java 使用foreach遍历集合元素的实例1 代码示例import java.util.*; public class ForeachT
- 前言 因为自己在做的一个小软件里面需要用到从A-Z排序的ListView,所以自然而然的想到了微信的联系人,我想要的就是那样的效果。本来没
- 项目中出了个 BUG,就在我眼皮子底下,很明显的一个 BUG,愣是看了两天才看出来。我有多个任务并发,任务执行完成后都有一个返回结果,我用一
- Springboot获取上下文ApplicationContext在项目中遇到了一个场景,就是通过获得上下文然后获取特定的bean。在此遇到
- 引言一个Java Gradle项目会涉及到资源的访问. 一般情况下会将当前项目所需的资源文件全部放置于resources文件夹下, 无论是m
- 当我们拿到一大段JSON字符串的时候,分析起来简直头皮发麻,相信很大一部分朋友也都会直接去BEJSON等网站去做一个JSON格式化,已方便自
- 一、项目背景1、介绍:最近在springboot项目中需要做一个阿里云OSS图片上传功能点,将OSS图片上传代码提取到公共工具类中,为了方便
- 使用 transient 修饰private transient String noColumn;使用 static 修饰private s
- 项目描述: springboot+springcloud+zookeeper+eureka+maven;为多模块多module的分布式架构;
- 安全发布对象在静态初始化函数中初始化一个对象引用将对象的引用保存到volatile类型域或者AtomicReference对象中将对象的引用
- 主要是因为GZipStream的构造函数中第一个需要传入一个Stream,第二个是指定操作方式:压缩还是解压缩。当时的疑问点主要有:1.我传
- 本文实例为大家分享了java实现简单单链表的具体代码,供大家参考,具体内容如下一、定义:单链表是一种链式存取的数据结构,用一组地址任意的存储
- maven插件主要是为maven中生命周期中的阶段服务的,maven中只是定义了3套生命周期,以及每套生命周期中有哪些阶段,具体每个阶段中执
- 前言应用系统需要通过Cache来缓存不经常改变得数据来提高系统性能和增加系统吞吐量,避免直接访问数据库等低速存储系统。缓存的数据通常存放在访
- 本文实例为大家分享了Android仿新浪微博分页管理界面的具体代码,供大家参考,具体内容如下多个activity分页管理,为了方便获取上下文
- File类简介package com.file;import java.io.File;import java.io.IOException
- 1.java后台(1)使用BigDecimal类方式一:String str=new BigDecimal(num+""
- 有时安全不得不考虑,看看新闻泄漏风波事件就知道了我们在用Spring boot进行开发时,经常要配置很多外置参数ftp、数据库连接信息、支付
- 引入pom<?xml version="1.0" encoding="UTF-8"?>&