Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。
Elasticsearch核心概念
索引(index)
索引(index):Elasticsearch存储数据的地方,可以理解成关系型数据库中的数据库概念,既索引库(Index): 若干个文档的合集.
类型(type)
类型(type)
映射(mapping)
映射(mapping):映射是定义一个文档以及其所包含的字段如何被存储和索引的方法。相当于关 系型数据库中的表结构
文档(document)
文档(document):Elasticsearch中的最小数据单元,常以json格式显示,一个document相当于关系型数据库中的一行数据 文档-----> mysql中的一行(一条记录)
倒排索引
一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,对应一个包含它的文档id列 表
TF:单词在某个文档中出现的次数
POS:单词在文档中出现的位置
倒排索引由两个主要部分组成:
-关键词词典(Term dictionary):存储了所有文档中出现的关键词及其相关信息,如词频,位置等
-倒排列表(Inverted List):存储了每个关键词对应的文档列表,包括文档ID、词频等信息
倒排索引rootcause
倒排索引(Inverted Index)是信息检索系统中一种重要的数据结构,用于快速定位包含某个关键词的文档。它通过将文档中的每个关键词映射到包含该关键词的文档列表,从而实现了关键词到文档的倒排映射,因此得名倒排索引;倒排索引:一种基于搜索关键词对文档进行索引的索引算法
field(域)
field(域):相当于mysql中的一列(一个字段)
倒排索引补充
正排索引
在讲述倒排索引之前先介绍下正排索引。正排索引就是如下表形式:
文档id | 文档内容 |
---|---|
1 | 什么是正排索引 |
2 | 什么是倒排索引 |
3 | 正排索引和倒排索引 |
倒排索引
倒排索引就是对上表进行转换,最简单的倒排索引如下表所示:
单词 | 文档ids |
---|---|
什么 | 1,2 |
是 | 1,2 |
正排 | 1,3 |
倒排 | 2,3 |
索引 | 1,2,3 |
和 | 3 |
词频(TF)和位置(POS)
上表所示的倒排索引之所以是最简单的,是因为这个索引系统只记载了哪些文档包含某个单词。实用的倒排索引还可以记载更多的信息,如下表第3列的词频和位置。
TF:单词在某个文档中出现的次数
POS:单词在文档中出现的位置
以“索引”这个单词为例,“3:2:<2,7>”:表示在文档id是3的文档中出现2次,在文档中的位置分别是2和7。
ES之索引操作(入门)
一、创建索引
1.向ES服务器发出 【PUT】 请求:http://127.0.0.1:9200/test-index-1,会创建一个名为test-index-1的索引,返回结果如下。
{
"acknowledged": true, //已确认
"shards_acknowledged": true, //已确认碎片
"index": "test-index-1" //索引名
}
2.如果再次创建相同的索引,.向ES服务器发出 【PUT】 请求:http://127.0.0.1:9200/test-index-1,会提示索引已经存在。
{
"error": {
"root_cause": [
{
"type": "resource_already_exists_exception",
"reason": "index [test-index-1/P_G2PgE4Tkys4VPVsbOing] already exists",
"index_uuid": "P_G2PgE4Tkys4VPVsbOing",
"index": "test-index-1"
}
],
"type": "resource_already_exists_exception",
"reason": "index [test-index-1/P_G2PgE4Tkys4VPVsbOing] already exists",
"index_uuid": "P_G2PgE4Tkys4VPVsbOing",
"index": "test-index-1"
},
"status": 400
}
already exists已存在 reason原因 status状态;状况 cause原因 rootcause究其根源
二、索引查询
1.查询索引名为test-index-1的相关信息
【GET】 请求:http://127.0.0.1:9200/test-index-1
{
"test-index-1": {
"aliases": {},
"mappings": {},
"settings": {
"index": {
"creation_date": "1696646820838",
"number_of_shards": "5",
"number_of_replicas": "1",
"uuid": "P_G2PgE4Tkys4VPVsbOing",
"version": {
"created": "6080699"
},
"provided_name": "test-index-1"
}
}
}
}
2.查询ES中所有索引的信息
【GET】请求:http://127.0.0.1:9200/_cat/indices?v
参数"v"表示展示详细信息
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size yellow open read-me t68Vaxw2TZ6oqZ9A8V_8Qg 5 1 1 0 4.9kb 4.9kb yellow open test-index-3 hEvtpnkxQXmUxjMNDlJR9w 5 1 0 0 1.1kb 1.1kb yellow open test-index-2 F_oH8X_cQWCoCWHOGaPU3g 5 1 0 0 1.1kb 1.1kb yellow open test-index-1 P_G2PgE4Tkys4VPVsbOing 5 1 0 0 1.2kb 1.2kb
三、删除索引
1.删除索引名为test-index-3的索引
【DELETE】请求:http://127.0.0.1:9200/test-index-3
{
"acknowledged": true
}
2.再次执行会提示没有此索引
{
"error": {
"root_cause": [
{
"type": "index_not_found_exception",
"reason": "no such index",
"resource.type": "index_or_alias",
"resource.id": "test-index-3",
"index_uuid": "_na_",
"index": "test-index-3"
}
],
"type": "index_not_found_exception",
"reason": "no such index",
"resource.type": "index_or_alias",
"resource.id": "test-index-3",
"index_uuid": "_na_",
"index": "test-index-3"
},
"status": 404
}