elasticsearch7-DSL查询与精准查询


个人名片:

博主:酒徒ᝰ.
个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。
本篇励志:三人行,必有我师焉。

本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 点击观看

目录

  • 一、DSL查询文档
    • [1. DSL查询分类](#1. DSL查询分类)
    • [2. 全文检索查询](#2. 全文检索查询)
    • [3. 精准查询](#3. 精准查询)

一、DSL查询文档

探索Elasticsearch的DSL查询与精准查询:快速获取数据的重要工具

Elasticsearch是一款开源的、分布式的、实时的搜索和分析引擎。自2010年诞生以来,它已经成为了大数据时代背景下不可或缺的工具。Elasticsearch的核心功能是提供近实时的搜索和分析服务,支持全文搜索、结构化搜索以及聚合查询等。本文将向大家介绍Elasticsearch的DSL查询和精准查询,以帮助你更快速地获取所需数据。

1. DSL查询分类

DSL(Domain Specific Language)查询是Elasticsearch中的一种查询方式,它允许我们使用类似SQL的语法来查询数据。通过DSL查询,我们可以很方便地对数据进行各种复杂的查询和分析。
Elasticsearch提供了基于JSON的DSL来定义查询。常见的查询类型包括:

查询所有:查询出所有数据,一般测试用。例如:match_all 全文检索查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如:

  • match_query
  • multi_match_query

精确查询:根据精确词条值查找数据,一般是查找keyword、数值、日期、boolean等类型字段。例如:

  • ids
  • range
  • term

地理(geo)查询:根据经纬度查询。例如:

  • geo_distance
  • geo_bounding_box

复合查询:复合查询可以将上述各种查询条件组合起来,合并查询条件。例如:

  • bool
  • function_score

查询的语法基本:

json 复制代码
GET /indexName/_search
{
  "query": {
    "查询类型": {
      "查询条件": "条件值"
    }
  }
}

示例:

查询全部

2. 全文检索查询

Elasticsearch中的全文检索查询是一种高级搜索功能,它可以在一个文本字段中搜索特定的词或短语,并返回匹配的结果。

全文检索查询的作用:

  • 全文检索查询可以帮助用户在一个文本字段中快速地搜索特定的词或短语,提高查询效率。

  • 全文检索查询可以大大减少用户的浏览和操作次数,提高用户体验。

  • 全文检索查询可以帮助用户在一个文本字段中查找含有特定词或短语的文档,提高查全率和查准率。

  • 全文检索查询可以帮助用户快速地从一个文本字段中查找含有特定词或短语的文档,提高查询效率。
    全文检索查询,会对用户输入内容分词,常用于搜索框搜索
    常见的全文检索查询包括:

  • match查询:单字段查询

  • multi_match查询:多字段查询,任意一个字段符合条件就算符合查询条件

match查询语法如下:

json 复制代码
GET /indexName/_search
{
  "query": {
    "match": {
      "FIELD": "TEXT"
    }
  }
}

示例:

mulit_match语法如下:

json 复制代码
GET /indexName/_search
{
  "query": {
    "multi_match": {
      "query": "TEXT",
      "fields": ["FIELD1", " FIELD12"]
    }
  }
}

示例:

总结

match和multi_match的区别是什么?

match:根据一个字段查询

multi_match:根据多个字段查询,参与查询字段越多,查询性能越差

3. 精准查询

精准查询是Elasticsearch中的另一种查询方式,它允许我们根据字段值的特征来查询数据。这种查询方式通常用于更精确的数据检索。

精确查询一般是查找keyword、数值、日期、boolean等类型字段。所以不会对搜索条件分词。常见的有:

  • term:根据词条精确值查询
  • range:根据值的范围查询

term查询

语法说明:

json 复制代码
// term查询
GET /indexName/_search
{
  "query": {
    "term": {
      "FIELD": {
        "value": "VALUE"
      }
    }
  }
}

示例:

range查询

基本语法:

json 复制代码
// range查询
GET /indexName/_search
{
  "query": {
    "range": {
      "FIELD": {
        "gte": 10, // 这里的gte代表大于等于,gt则代表大于
        "lte": 20 // lte代表小于等于,lt则代表小于
      }
    }
  }
}

示例:

总结

精确查询常见的有哪些?

term查询:根据词条精确匹配,一般搜索keyword类型、数值类型、布尔类型、日期类型字段

range查询:根据数值范围查询,可以是数值、日期的范围

相关推荐
jiayong2311 分钟前
Elasticsearch Java 开发完全指南
java·大数据·elasticsearch
r***186440 分钟前
FlinkCDC实战:将 MySQL 数据同步至 ES
android·mysql·elasticsearch
武子康1 小时前
大数据-170 Elasticsearch 7.3.0 三节点集群实战:目录/参数/启动到联机
大数据·后端·elasticsearch
G皮T1 小时前
【Elasticsearch】索引状态管理(ISM)实战(万字长文)
大数据·elasticsearch·搜索引擎·ilm·ism·索引状态管理·索引生命周期管理
小园子的小菜2 小时前
深入ES内核:索引分片的源码解析与实践思考
大数据·elasticsearch·搜索引擎
野生技术架构师2 小时前
MySQL同步ES的 5 种方案
数据库·mysql·elasticsearch
v***43172 小时前
Elasticsearch(ES)基础查询语法的使用
python·elasticsearch·django
yumgpkpm11 小时前
腾讯TBDS和Cloud Data AI CMP 比较的缺陷在哪里?
hive·hadoop·elasticsearch·zookeeper·spark·kafka·hbase
Elastic 中国社区官方博客11 小时前
使用 LangChain 和 Elasticsearch 开发一个 agentic RAG 助手
大数据·人工智能·elasticsearch·搜索引擎·ai·langchain·全文检索
j***121512 小时前
Java进阶(ElasticSearch的安装与使用)
java·elasticsearch·jenkins