本文为博主原创,未经允许不得转载:

  

1.  查询所有:match_all

GET /es_db/_doc/_search
{
"query":{
"match_all":{}
}
}

2.有查询条件

  2.1 模糊匹配

  模糊匹配主要是针对文本类型的字段,文本类型的字段会对内容进行分词,对查询时,也会对搜索条件进行分词,然后通过倒排索引查找到匹配的数据,模糊匹配主要通过match等参数来实现。

  match : 通过match关键词模糊匹配条件内容,,模糊匹配,需要指定字段名,但是输入会进行分词

  prefix : 前缀匹配

  regexp : 通过正则表达式来匹配数据

  match条件还支持以下参数:
    query : 指定匹配的值

    operator : 匹配条件类型
      and : 条件分词后都要匹配

      or : 条件分词后有一个匹配即可(默认)
    minmum_should_match : 指定最小匹配的数量
  

  根据备注信息模糊查询 match, match会根据该字段的分词器,进行分词查询
  

GET /es_db/_doc/_search
{
"from": 0,
"size": 1,
"query": {
"match": {
"address": "玄武湖公园"
}
}
}

  多字段模糊匹配查询与精准查询 multi_match

POST /es_db/_doc/_search
{
"query": {
"multi_match": {
"query": "张三",
"fields": [
"address",
"name"
]
}
}
}

 类比 mysql :

SQL: select * from student where name like '%张三%' or address like '%张 三%
  2.2 精确匹配
    term : 单个条件相等,,这个输入不会进行分词

    terms : 单个字段属于某个值数组内的值
    range : 字段属于某个范围内的值
    exists : 某个字段的值是否存在
    ids : 通过ID批量查询

     

    根据名称精确查询姓名 term, term查询不会对字段进行分词查询,会采用精确匹配
    注意: 采用term精确查询, 查询字段映射类型属于为keyword.
POST /es_db/_doc/_search
{
"query": {
"term": {
"name": "admin"
}
}
}

  

   2.3 组合条件查询
  

  组合条件查询是将叶子条件查询语句进行组合而形成的一个完整的查询条件
  constant_score : 不计算相关度评分

  bool : 各条件之间有and,or或not的关系:
    1.must : 各个条件都必须满足,即各条件是and的关系
    2. should : 各个条件有一个满足即可,即各条件是or的关系
    3. must_not : 不满足所有条件,即各条件是not的关系
    4. filter : 不计算相关度评分,它不计算_score即相关度评分,效率更高
  

  ES中索引的数据都会存储一个_score分值,分值越高就代表越匹配。另外关于某个搜索的分值计算还是很复杂的,因此也需要一定的时间。
  must/filter/shoud/must_not 等的子条件是通过 term/terms/range/ids/exists/match 等叶子条件为参数的
   查询示例:
POST /es_db/_doc/_search
{
"query": {
"query_string": {
"query": "admin OR 南京",
"fields": [
"name",
"address"
]
}
}
}
  分页、输出字段、排序综合查询
POST /es_db/_doc/_search
{
"query": {
"range": {
"age": {
"gte": 25,
"lte": 28
}
}
},
"from": 0,
"size": 2,
"_source": [
"name",
"age",
"book"
],
"sort": {
"age": "desc"
}
}
 
    
 
 

Elasticsearch 索引与文档的常用操作总结二:复杂条件查询的更多相关文章

  1. 007-elasticsearch5.4.3【一】概述、Elasticsearch 访问方式、Elasticsearch 面向文档、常用概念

    一.概述 Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上. Elasticsearch 也是使用 Java 编写的,它的内部使用 L ...

  2. elasticsearch查询篇索引映射文档数据准备

    elasticsearch查询篇索引映射文档数据准备 我们后面要讲elasticsearch查询,先来准备下索引,映射以及文档: 我们先用Head插件建立索引film,然后建立映射 POST http ...

  3. Elastic Stack 笔记(四)Elasticsearch5.6 索引及文档管理

    博客地址:http://www.moonxy.com 一.前言 在 Elasticsearch 中,对文档进行索引等操作时,既可以通过 RESTful 接口进行操作,也可以通过 Java 也可以通过 ...

  4. Elasticsearch 7.x文档基本操作(CRUD)

    官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs.html 1.添加文档 1.1.指定文档ID PUT ...

  5. es之对文档进行更新操作

    5.7.1:更新整个文档 ES中并不存在所谓的更新操作,而是用新文档替换旧文档: 在内部,Elasticsearch已经标记旧文档为删除并添加了一个完整的新文档并建立索引.旧版本文档不会立即消失 ,但 ...

  6. elasticsearch 基础 —— 分布式文档存储原理

    路由一个文档到一个分片中 当索引一个文档的时候,文档会被存储到一个主分片中. Elasticsearch 如何知道一个文档应该存放到哪个分片中呢?当我们创建文档时,它如何决定这个文档应当被存储在分片  ...

  7. ElasticSearch 集群基本概念及常用操作汇总(建议收藏)

    内容来源于本人的印象笔记,简单汇总后发布到博客上,供大家需要时参考使用. 原创声明:作者:Arnold.zhao 博客园地址:https://www.cnblogs.com/zh94 目录: Elas ...

  8. shift+alt 可对notepadplusplus 打开的文档进行列操作

    shift+alt 可对notepadplusplus 打开的文档进行列操作

  9. flask - fastapi (python 异步API 框架 可以自动生成swagger 文档) 常用示例 以及整合euraka nacos

    flask - fastapi    (python 异步API 框架  可以自动生成swagger 文档)  常用示例: 之前使用 flask 需要手动写文档, 这个可以自动生成, fastapi ...

  10. Elasticsearch技术解析与实战(二)文档的CRUD操作

    启动Elasticsearch和kibana 访问Elasticsearch:http://localhost:9200/?pretty 访问kibana:http://localhost:5601 ...

随机推荐

  1. 36. 干货系列从零用Rust编写负载均衡及代理,内网穿透中内网代理的实现

    wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代 ...

  2. Oracle重做、归档日志

    日志文件 oracle日志文件分为两种: 重做日志文件(redo),或者称为"在线重做日志" 归档日志文件(arch),或者称为"归档重做日志" 在线重做日志文 ...

  3. 华企盾DSC启动服务器提示“发生系统错误5”

    解决方法:没有管理员权限 导致,需要以管理员权限运行服务器安装包,覆盖安装一下

  4. 【JMM内存模型-4】JMM内存模型之CPU缓存策略-jmmcpu4

    title: [JMM内存模型-4]JMM内存模型之CPU缓存策略 date: 2021-11-17 13:27:48.139 updated: 2021-12-26 17:43:10.442 url ...

  5. 2023.3 Idea配置Tomcat环境

    tomcat配置 下载tomcat 先到官网(按住Ctrl再左键点击直接打开官网)下载64位的tomcat,网速慢就用魔法下 创建项目.模块 打开idea(我用的是最新的idea的专业版,ui有点变化 ...

  6. 终于卷完了!MySQL 打怪升级进阶成神之路(2023 最新版)!

    从第一篇文章开始,我们逐步详细介绍了 MySQL 数据库的基础知识,如:数据类型.存储引擎.性能优化(软.硬及sql语句),MySQL 数据库的高可用架构的部分,如:主从同步.读写分离的原理与实践.跨 ...

  7. Linux的发行版及其描述

    Linux的十种发行版及其描述 linux其中十种发行版本为Debian.Gentoo.Ubuntu.Damn Vulnerable Linux.红帽企业级Linux. CentOS.Fedora.K ...

  8. libGDX游戏开发之按轨迹移动(十一)

    libGDX游戏开发之运动轨迹绘制(十一) libGDX系列,游戏开发有unity3D巴拉巴拉的,为啥还用java开发?因为我是Java程序员emm-国内用libgdx比较少,多数情况需要去官网和go ...

  9. 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 03.EQS初体验:从智障到智慧

    斯坦福课程 UE4 C++ ActionRoguelike游戏实例教程 0.绪论 概述 本文章对应课程第十一章 43节.这篇文章会简单介绍EQS和实际上手使用,为AI添加更丰富的行为逻辑. 目录 初识 ...

  10. 小熊派开发实践丨小熊派+合宙Cat.1接入云服务器

    摘要:使用小熊派开发板,以合宙的AIR724为通信模组(Cat.1),以AT指令方式,通过mqtt协议接入云服务器. 本贴使用小熊派开发板+合宙的Air724(Cat.1模组),接入自己搭建的EMQ服 ...