Elasticsearch笔记(更新中)
安装
安装ES(linux)
下载地址:
安装完成后,访问9200端口,即可看到响应的Elasticsearch服务的基本信息
安装kibana(linux)
下载地址:
安装完成后,直接访问5601端口,即可看到控制台页面
选择
Explore on my own
之后,进入主页面然后选中
Dev tools
,进入开发工具页面
语法:请求方式 请求路径
正向索引与倒排索引
elasticsearch之所以有如此高性能的搜索表现,正是得益于底层的倒排索引技术。
正向索引
id字段创建了索引,而索引底层是B+树,其他字段只在叶子节点上存在。
根据id精确匹配时,可以走索引,查询效率较高。
而当搜索条件为模糊匹配时,由于索引无法生效,导致从索引查询退化为全表扫描,效率很差。
比如 select xxx from xxx where xxx like '%开头的模糊查询%'
因此,正向索引适合于根据索引字段的精确搜索,不适合基于部分词条的模糊匹配。
而倒排索引恰好解决的就是根据部分词条模糊匹配的问题。
倒排索引
文档(
Document
):用来搜索的数据,其中的每一条数据就是一个文档。例如一个网页、一个商品信息词条(
Term
):对文档数据或用户搜索数据,利用某种算法分词,得到的具备含义的词语就是词条。例如:今天天气格外晴朗,阳光明媚。,就可以分为: [“今天”、“天气”、“格外”、“晴朗”、“,”、“阳光”、“明媚”、“。”] 这样的几个词条
倒排索引的创建流程
一、通过分词算法处理
目的:将文档内容按照语义拆分成一个个词条,以便后续处理。
方法:使用分词算法,如结巴分词、jieba分词等,对文档进行分词处理。这些算法能够识别文档中的单词、短语,并根据语义进行拆分。
示例:
原始文档:“今天天气格外晴朗,阳光明媚。”
分词处理后:[“今天”、“天气”、“格外”、“晴朗”、“,”、“阳光”、“明媚”、“。”]
二、创建表
目的:记录每个词条及其在文档中的位置信息,为后续索引创建做准备。
结构:创建一个表格,每行数据包括词条、词条所在文档的ID、词条在文档中的位置(如字符偏移量)等信息。
三、创建正向索引
目的:由于词条具有唯一性,可以为每个词条创建正向索引,以便于快速查找包含该词条的文档。
方法:根据分词处理后的词条列表,为每个词条分配一个唯一的索引值。这个索引值可以作为词典中的单词ID,用于倒排索引的构建。
词典(部分)
正向索引示例(部分):
正向索引与倒排索引的区别
正向索引是最传统的,根据id索引的方式。
但根据词条查询时,必须先逐条获取每个文档,然后判断文档中是否包含所需要的词条,是根据文档找词条的过程。
而倒排索引则相反,是先找到用户要搜索的词条,根据词条得到保护词条的文档的id,然后根据id获取文档。是根据词条找文档的过程。