南京栖霞区有做网站的吗,有模板了怎么建设网站,全国网站开发公司,三水网站建设企业疑问
ES为什么这么快#xff1f;
全文检索
听过一个程序扫描文本的每一个单词#xff0c;针对单词建立索引#xff0c;并保存该单词在文本中的位置#xff0c;以及出现的次数。在检索查询时候#xff0c;通过建立好的索引进行查询#xff0c;将索引中单词对应的文本位…疑问
ES为什么这么快
全文检索
听过一个程序扫描文本的每一个单词针对单词建立索引并保存该单词在文本中的位置以及出现的次数。在检索查询时候通过建立好的索引进行查询将索引中单词对应的文本位置出现的此处返回给用户有了具体文本的位置就可以将具体内容读取出来。
分词原理、倒排索引
例如我要存储三个数据“hello speeder”、“hello world”、“Im speeder”那么存储的过程会经历什么 分词和去重将上述三个数据分成四个单词hello speeder world Im建立倒排索引
IDwordindex1hello1,22speeder1,33world24Im3
正排索引根据index查询数据信息例如根据ID查询name倒排索引根据数据信息查询对应的index也叫反向索引上述根据word查询index就是倒排索引在用户检索查询时流程如下 先根据关键词查word查询到index。再根据index查询到对应的整条数据记录包含其他所有的field。我认为这一步类似于关系型数据库中聚集索引的回表操作展示信息。
ES、Lucene、Solr
lucene只能用在java项目中需要引入jar包lucene不支持集群环境Solr实时建立索引时Solr会产生IO阻塞查询性能较差Solr用的是Zookeeper进行分布式管理而ES自带有分布式协调管理功能。Solr支持JSON/XML/CSV但是ES只支持json文件但是ES实时搜索应用效率高于SolrES是基于Lucene的搜索框架
ES、kibana、logstash
ES搜索引擎kibana可视化管理界面logstash存储库
ES和关系型数据库比较
ES关系型数据库Index索引Database数据库Type或者_Doc类型Table表Document文档Row行Field字段Column列
ES中的重要概念
IndexMappingTypeDocumentFieldClusternode分片和副本
文档映射
查看映射关系get /index_name/_mapping加上_下划线表示查看ES内置对象
动态映射自动映射字段类型静态映射自己指定字段映射类型text类型中会有type为keyword的类型字段因为text默认是要拆分分词进行检索keyword是为了保留原文本的不拆分而存在的keyword也算一种类型例如人员表中的name就可以设置为keyword不必设置成text进行分词拆分。
IK分词器
ES中默认的分词器是单字分词器会把一句汉字中的所有字都拆开所以默认的在中文环境下十分不好用所以要用第三方分词器。IK直接放在ES安装目录下的plugins重启ES后即可生效。IK分词器两种模式 ik_smart粗粒度拆分运用比较少。ik_max_word最细粒度拆分常用。 ES中指定IK分词器作为默认分词器
put /index_name
{settings : {index: {analysis.analyzer.default.type : ik_max_word}}
}基本操作
创建索引库put /index_name查询索引库get /inex_name删除索引库delete /index_name添加一条记录put /index_name/_doc/id例如put /test/user/1条件查询范围查询批量查询分页查询
DSL语言高级查询ES中最核心的查询语法
match拆分查询term不拆分查询multi_match多词查询
ES-Header集群管理可视化界面
待更新。。