快速熟悉ElasticSearch的基本概念

1.全文检索

全文检索是通过文本内容进行全面搜索的技术。通过全文检索可以快速地在大量文本数据中查找包含特定关键词或者短语的文档,并且返回相关的搜索结果。

检索和查询的区别

  • 检索没有搜索条件边界,检索的结果取决于相关性,相关性计算无明确边界性条件,比如同义词、谐音、别名等等都可以作为相关性的判断依据。
  • 查询有搜索条件边界,举个例子:现在有张 t 表,我要查询 t 表中的所有字段且查询条件是 id = 1,age = 18
    ,那么我写出来的sql语句就是这样的
    select * from t1 where id = 1 and age = 18;
    这个时候age = 18,id = 1都是搜索的条件边界。

总结:检索和查询的区别就在于有没有搜索条件边界。

2.倒排索引

在讲倒排索引之前先讲一下什么是正排索引。

正排索引是将文档按照顺序排列并且进行编号的索引结构,在正排索引中可以根据编号快速的寻找到对应的文档资料。

倒排索引以单词或者短语建立的索引结构。

倒排索引的建立**是先对文档进行分词处理,然后记录每个单词在哪些文档中出现,以及出现的位置信息。**通过倒排索引,可以根据关键词或者短语快速的找到包含这些词语的文档。

3.ElasticSearch的介绍

ElasticSearch是开源的分布式搜索和数据分析引擎,它专门用于处理大规模的文本数据和实现高性能的全文检索,如果有要实现搜索的场景,那么ElasticSearch是一个很好的选择。

核心概念

索引

索引可以类比为关系型数据库的 ,也就是database

类型

类型对应于索引来说是内部的逻辑分区,一个索引内部可以对应一个或者多个类型。可以类比为数据库中的

文档

文档实际上就是真正存储数据的东西,这里面存储了我们真正的内容,一般是json格式的数据。

每个文档都有一个类型和id,一个文档里面多个字段。

mapping

"mapping" 是用于定义索引中数据的结构和字段类型的过程。它类似于数据库中的表结构定义。可以理解为关系型数据库中表的结构定义

dart 复制代码
PUT /user1
{
	"mappings": {
		"dynamic": "true",
		"properties": {
			"name": {
				"type": "text"
			},
			"address": {
				"type": "object",
			}
		}
	}
}
PUT /user2
{
	"mappings": {
		"dynamic": "false",
		"properties": {
			"name": {
				"type": "text"
			},
			"address": {
				"type": "object",
			}
		}
	}
}
PUT /user3
{
	"mappings": {
		"dynamic": "strict",
		"properties": {
			"name": {
				"type": "text"
			},
			"address": {
				"type": "object",
			}
		}
	}
}

这里我设置了两个字段一个name,一个address,将他们的类型设置为text类型

如果我将某个文档的"dynamic"设置为strict或者false,那么就当有新字段的文档插入到这个索引里面来就会报错(类似于关系型数据库,如果往一个不存在的字段插入值那么肯定是会报错的),但是如果设置为true的话,Elasticsearch 将自动检测到新的字段,并为它们创建映射。

flied

flied也就是字段了,一个文档包含多个字段,每个字段都有自己的名称和类型。

dsl

实际上对应到关系型数据库就是sql

相关推荐
偷吃的耗子13 分钟前
大数据报表系统技术方案与业务方案设计
大数据·架构
2601_949539451 小时前
家用插混SUV实测研究:聚焦电池安全与质保,为家庭选型提供参考
大数据
康康的AI博客1 小时前
优化工程系统稳定性:DMXAPI在可靠性工程中的应用
大数据
故事和你911 小时前
sdut-程序设计基础Ⅰ-实验二选择结构(1-8)
大数据·开发语言·数据结构·c++·算法·优化·编译原理
GlobalInfo3 小时前
汽车侧摄像头市场份额调研及投资战略研究报告2026
大数据·人工智能·汽车
飞Link3 小时前
深度解析 TSAD:时序数据异常分类与检测技术的全景指南
大数据·人工智能·机器学习·数据挖掘
天远Date Lab3 小时前
天远企业司法认证API实战:Python构建企业级供应链合规审查防火墙
大数据·开发语言·网络·python
Msshu1234 小时前
多协议快充取电芯片 支持与主板MCU共用D+D-网络可取电可与电脑传输数据
elasticsearch·sqlserver·flink·rabbitmq·storm
水痕014 小时前
go语言里面使用elasticsearch
开发语言·elasticsearch·golang
七夜zippoe4 小时前
[特殊字符] Python日志系统革命:Loguru结构化日志与ELK Stack集中管理实战指南
大数据·python·elk·loguru·logstash