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

相关推荐
Elastic 中国社区官方博客7 小时前
Elasticsearch Open Inference API 增加了对 Jina AI 嵌入和 Rerank 模型的支持
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索·jina
隔壁老王1567 小时前
mysql实时同步到es
数据库·mysql·elasticsearch
SunnyRivers9 小时前
关于ES中text类型时间字段范围查询的结构化解决方案
elasticsearch·时间·text·范围查询
API_technology9 小时前
电商搜索API的Elasticsearch优化策略
大数据·elasticsearch·搜索引擎
stone.eye13 小时前
阿里云通过docker安装skywalking及elasticsearch操作流程
elasticsearch·阿里云·docker·skywalking
fruge17 小时前
git上传 项目 把node_modules也上传至仓库了,在文件.gitignore 中忽略node_modules 依然不行
大数据·git·elasticsearch
飞火流星0202721 小时前
ElasticSearch公共方法封装
elasticsearch·搜索引擎·es鉴权·es代理访问·es公共方法封装·es集群访问·判断es索引是否存在
vvvae12341 天前
Elasticsearch实战应用:从“搜索小白”到“数据侦探”的进阶之路
elasticsearch
yinbp1 天前
bboss v7.3.5来袭!新增异地灾备机制和Kerberos认证机制,助力企业数据安全
大数据·elasticsearch·微服务·etl·restclient·bboss