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查询:根据数值范围查询,可以是数值、日期的范围

相关推荐
青云交2 小时前
大数据新视界 --大数据大厂之探索ES:大数据时代的高效搜索引擎实战攻略
大数据·数据库·elasticsearch·搜索引擎·数据分析·高效搜索·可扩展性·电商平台、新闻媒体、企业内部
xcg3401235 小时前
【Elasticsearch】-实现向量相似检索
elasticsearch·搜索引擎·向量搜索·相似度检索
鸡c21 小时前
es的封装
大数据·elasticsearch·搜索引擎
sp_fyf_202421 小时前
计算机人工智能前沿进展-大语言模型方向-2024-09-20
人工智能·搜索引擎·语言模型
中间件XL1 天前
搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(一)-概述
搜索引擎·全文检索·elasticsearch8
Elastic 中国社区官方博客1 天前
Elasticsearch:检索增强生成背后的重要思想
大数据·人工智能·elasticsearch·搜索引擎·全文检索
中间件XL1 天前
搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(四)-搜索
elasticsearch·搜索引擎·全文检索·elasticsearch8
Fan1 天前
Elasticsearch 下载安装及使用总结
大数据·elasticsearch·jenkins
Connie14511 天前
filebeat采集挂载出来的/home/Logs下的日志过程
elasticsearch
ITdgr1 天前
更高效的搜索工具,国内免费好用的AI智能搜索引擎工具
人工智能·搜索引擎