10个Elasticsearch查询的实用技巧分享

目录
  • 前言
  • 示例
    • 1. 匹配多个词语
    • 2. 匹配某个字段中的任意一个词
    • 3. 匹配某个字段中的词语前缀
    • 4. 匹配某个字段中的词语通配符
    • 5. 匹配某个字段中的词语模糊匹配
    • 6. 匹配某个字段中的词语范围
    • 7. 匹配某个字段中的词语存在与否
    • 8. 按照某个字段排序
    • 9. 返回某些字段的部分数据
    • 10. 进行分页操作

前言

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
}

到此这篇关于10个Elasticsearch查询的实用技巧分享的文章就介绍到这了,更多相关Elasticsearch查询内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • java使用elasticsearch分组进行聚合查询过程解析

    这篇文章主要介绍了java使用elasticsearch分组进行聚合查询过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 java连接elasticsearch 进行聚合查询进行相应操作 一:对单个字段进行分组求和 1.表结构图片: 根据任务id分组,分别统计出每个任务id下有多少个文字标题 1.SQL:select id, count(*) as sum from task group by taskid; java ES连接工具类 p

  • Java如何使用elasticsearch进行模糊查询

    这篇文章主要介绍了Java如何使用elasticsearch进行模糊查询,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 使用环境上篇文章本人已书写过,需要maven坐标,ES连接工具类的请看上一篇文章,以下是内容是笔者在真实项目中运用总结而产生,并写的是主要方法和思路,具体实现大家可以看后面文章,若其中有不适,请大家多多包涵 一.ES模糊查询 (一)不含中文模糊查询,适用于数字 SearchResponse searchResponse=nul

  • Elasticsearch percolate 查询示例详解

    目录 Elasticsearch 通常如何工作? 什么是 percolate 查询? Percolate 用例 Percolate query 实施 创建 percolate 索引: 如何将 Percolate 与你的应用程序集成 为什么要 percolate 而不是 watcher? Percolate query API Elasticsearch 通常如何工作? 我们将文档索引到 Elasticsearch 中并对其运行查询以获得满足提供的搜索条件的文档. 我们构造一个匹配或术语查询作为输

  • ElasticSearch事件查询语言EQL操作

    目录 前述 EQL优点 基础语法 数据准备 数据窗口搜索 统计符合条件的事件 事件序列 安全检测 数据准备 获取regsvr32事件的计数 检查命令行参数 检查恶意脚本加载 检查攻击成功可能性 前述 EQL 的全名是 Event Query Language (EQL).事件查询语言(EQL)是一种用于基于事件的时间序列数据(例如日志,指标和跟踪)的查询语言.在 Elastic Security 平台上,当输入有效的 EQL 时,查询会在数据节点上编译,执行查询并返回结果.这一切都快速.并行地发

  • Elasticsearch之基本查询及组合查询操作示例

    目录 Elasticsearch查询 一 基本查询 1.1 match查询 1.2 term查询 1.3 terms查询 1.4 控制查询的返回数量(分页) 1.5 match_all 查询 1.6 match_phrase查询 1.7 multi_match 1.8 指定返回的字段 1.9 sort 结果排序 1.10 range范围查询 1.11 wildcard查询 1.12 exists存在 二 组合查询 2.1 bool查询 2.2 简单过滤查询 2.3 查询多个值 2.4 bool过

  • 10个Elasticsearch查询的实用技巧分享

    目录 前言 示例 1. 匹配多个词语 2. 匹配某个字段中的任意一个词 3. 匹配某个字段中的词语前缀 4. 匹配某个字段中的词语通配符 5. 匹配某个字段中的词语模糊匹配 6. 匹配某个字段中的词语范围 7. 匹配某个字段中的词语存在与否 8. 按照某个字段排序 9. 返回某些字段的部分数据 10. 进行分页操作 前言 Elasticsearch是一个非常流行的搜索引擎,已经成为了许多企业的首选解决方案.然而,我们要想成为一个优秀的程序员,就必须掌握各种查询技巧.本文将向大家介绍10个实用的E

  • Python中隐藏的五种实用技巧分享

    目录 1. ... 对象 2.解压迭代对象 3.展开的艺术 4.下划线 _ 变量 5.多种用途的else 循环 异常处理 1. ... 对象 没错,你没看错,就是 "..." 在Python中 ... 代表着一个名为 Ellipsis 的对象.根据官方说明,它是一个特殊值,通常可以作为空函数的占位符,或是用于Numpy中的切片操作. 如: def my_awesome_function():     ... 等同于: def my_awesome_function():     Ell

  • Python数据处理的三个实用技巧分享

    目录 1 Pandas 移除某列 2 统计标题单词数 3 Genre 频次统计 我使用的 Pandas 版本如下,顺便也导入 Pandas 库. >>> import pandas as pd >>> pd.__version__ '0.25.1' 在开始前先确保解释器和数据集在同一目录下: >>> import os >>> os.chdir('D://source/dataset') # 这是我的数据集所在目录 >>&

  • 关于Python中进度条的六个实用技巧分享

    目录 1 简介 2 tqdm中实用的6个特性 2.1 autonotebook自动切换进度条风格 2.2 延迟渲染进度条 2.3 自定义进度条色彩 2.4 自主控制的进度上限 2.5 针对enumerate.zip和map的替代 2.6 设置进度条“用完即逝” 总结 1 简介 费老师我在几年前写过的一篇文章(https://www.jb51.net/article/243348.htm)中,介绍过tqdm这个在当下Python圈子中已然非常流行的进度条库,可以帮助我们为任何具有循环迭代过程的代码

  • 分享ES6的7个实用技巧

    Hack #1 交换元素 利用 数组解构来实现值的互换 let a = 'world', b = 'hello' [a, b] = [b, a] console.log(a) // -> hello console.log(b) // -> world Hack #2 调试 我们经常使用 console.log()来进行调试,试试 console.table()也无妨. const a = 5, b = 6, c = 7 console.log({ a, b, c }); console.ta

  • 分享介绍Python的9个实用技巧

    本文会介绍一些Python大神用的贼溜的技巧,让一探究竟吧!欢迎收藏学习,喜欢点赞支持,欢迎畅聊. 整理字符串输入 整理用户输入的问题在编程过程中很常见.有更好的方法来解决: user_input = "This string has some whitespaces... " character_map = { ord( ) : , ord( ) : , ord( ) : None } user_input.translate(character_map) # This string

  • 分享15 超级好用得 Python 实用技巧

    目录 01 all or any 02 dir 03 列表(list)推导式 04 pprint 05 repr 06 sh 07 Type hints 08 uuid 09 wikipedia 10 xkcd 11 zip 12 emoji 13 howdoi 14 Jedi 15 **kwargs 01 all or any Python 语言如此流行的众多原因之一,是因为它具有很好的可读性和表现力. 人们经常开玩笑说 Python 是可执行的伪代码.当你可以像这样写代码时,就很难反驳. x

  • 关于TypeScript开发的6六个实用小技巧分享

    目录 1. 开发之前确定实体类型 2. 请求接口时只需要定义自己需要用到的字段 3. 使用枚举类型 4. DOM元素的类型要正常给 5.对象的类型要怎么给 6.结构赋值时类型怎么给 总结 本文总结一下使用TypeScript开发应用程序的一点小经验.说之前,推荐一个VSCODE立即执行TS代码的插件quokka.js, 使用方式,ctrl+shipt+p,输入关键字quokka 回车之后,输入代码之后会立即执行 1. 开发之前确定实体类型 在正式编码之前,如果没有接口文档的话,最好能拿到数据字典

  • 10 个Python中Pip的使用技巧分享

    目录 Python pip 1.安装 pip 2.升级 pip 3.安装库 4. 库的批量安装 5.卸载和升级包 6. 冻结 Python pip 依赖 7.查看库信息 8.查看需要升级的库 9. 检查兼容性问题 10. 将库下载到本地 众所周知,pip 可以安装.更新.卸载 Python 的第三方库,非常方便.你们中的许多人可能已经使用 pip 很长时间了,但不清楚它有哪些还不错的功能.希望我今天分享的技巧能让你从 Python pip 中受益. Python pip 让我们从 Python

  • 提高JavaScript执行效率的23个实用技巧

    本文向大家分享23种JavaScript提高执行效率的小技巧.最佳实践等非常实用的内容.当然JavaScript的实用技巧不止这些,还有很多即好玩又能提高程序运行效率的技巧,以后我们会继续分享给大家. 文中所提供的代码片段都已经过最新版的Chrome 30测试,该浏览器使用V8 JavaScript引擎(V8 3.20.17.15). 1.使用逻辑符号&&或者||进行条件判断 var foo = 10; foo == 10 && doSomething(); // 如果 f

随机推荐