elasticsearch是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。
发展史:elasticsearch的前身是Lucene,elasticsearch功能更强大
Lucene的优势:
•
易扩展
•
高性能(基于倒排索引)
Lucene的缺点:
•
只限于
Java
语言开发
•
学习曲线陡峭
不支持水平扩展
elk包括很多技术栈,核心是elasticsearch
正向索引和倒排索引
正向:
用户输入句子,我们进行分词,分词得到词条(term),在倒排索引中,根据词条找到文档的id。
总结:每一条数据就是文档,对文档进行分词得到就是词条
创建文档的对哪些字段进行分词呢?
PUT /my_index
{
"mappings": {
"properties": {
"my_field": {
"type": "text",
"analyzer": "my_custom_analyzer"
}
}
},
使用分词器进行分词,在添加文档数据的时候指定字段,字段的type一般为可分词text
比如用户输入小米手机
正向索引:查询词条时(小米)必须先找到文档,而后判断是否包含词条
类似select * from table where name