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

相关推荐
Familyism4 小时前
ES基础入门
大数据·elasticsearch·搜索引擎
跟着珅聪学java7 小时前
git stash详细教程
大数据·elasticsearch·搜索引擎
Elastic 中国社区官方博客8 小时前
使用 Elasticsearch Agent Builder 构建对话式费用助手,结合 Telegram, n8n 和 AWS Bedrock
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·aws
MARSERERER8 小时前
ElasticSearch如何使用bulk load
大数据·elasticsearch
WizLC8 小时前
【后端】关于Elasticsearch的入门,下载安装+使用
java·大数据·后端·elasticsearch·搜索引擎·全文检索
启明真纳8 小时前
Elasticsearch分词
大数据·elasticsearch
老陈头聊SEO19 小时前
生成引擎优化(GEO)助力内容创作与用户体验协同提升的新方法
其他·搜索引擎·seo优化
Elastic 中国社区官方博客20 小时前
让我们把这个 expense 工具从 n8n 迁移到 Elastic One Workflow
大数据·运维·elasticsearch·搜索引擎·ai·信息可视化·全文检索
Elasticsearch1 天前
通过将 OpenTelemetry Collector 用作框架,释放其强大功能
elasticsearch
risc1234561 天前
【Elasticsearch】如何读源码
elasticsearch