elasticsearch原理

1.ElasticSearch vs Solr 总结

(1)es基本是开箱即用,非常简单。Solr安装略微复杂一丢丢,可关注(solr6.6教程-基础环境搭建(一))
  (2)Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能。
  (3)Solr 支持更多格式的数据,比如JSON、XML、CSV,而 Elasticsearch 仅支持json文件格式。
  (4)Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供,例如图形化界面需要kibana友好支撑
  (5)Solr 查询快,但更新索引时慢(即插入删除慢),用于电商等查询多的应用;
     ES建立索引快(即查询慢),即实时性查询快,用于facebook新浪等搜索。
     Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。
  (6)Solr比较成熟,有一个更大,更成熟的用户、开发和贡献者社区,而 Elasticsearch相对开发维护者较少,更新太快,学习使用成本较高。

2.面试题

基于Lucene的实时的分布式搜索,基于RESTful接口。
1.Elasticsearch中的倒排索引是什么?
单词作为key, 单词的所有位置作为value,逗号连接起来。

比如
javainuse是一个很好的网站
javainuse是很好的网站之一。
在这里插入图片描述

2.集群、节点、索引、文档、类型是什么?

群集是一个或多个节点(服务器)的集合,它们共同保存您的整个数据,并提供跨所有节点的联合索引和搜索功能。群集由唯一名称标识,默认情况下为“elasticsearch”。此名称很重要,因为如果节点设置为按名称加入群集,则该节点只能是群集的一部分。

节点是属于集群一部分的单个服务器。

索引就像关系数据库中的“数据库”。
类型是索引的逻辑类别/分区,相当于mysql的表。
文档类似于关系数据库中的一行。不同之处在于索引中的每个文档可以具有不同的结构(字段),但是对于通用字段应该具有相同的数据类型。
MySQL => Databases => Tables => Columns / Rows
ElasticSearch => Indices => Types =>具有属性的文档

3.ElasticSearch中的分片是什么?
代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。
可以在创建索引库的时候指定
curl -XPUT ‘localhost:9200/test1/’ -d’{“settings”:{“number_of_shards”:3}}’
默认是一个索引库有5个分片
index.number_of_shards: 5

默认情况下,在Elasticsearch中的每个索引被分配5个主分片和一份拷贝,这意味着假设你的集群中至少有两个节点,你的索引将会有5个主分片和5个复制分片(每个主分片对应一个复制分片,5个复制分片组成一个完整拷贝),总共每个索引有10个分片。

4.ElasticSearch中的副本是什么?

一个索引被分解成碎片以便于分发和扩展。副本是分片的副本。一个节点是一个属于一个集群的ElasticSearch的运行实例。一个集群由一个或多个共享相同集群名称的节点组成。
在这里插入图片描述
5. create 和index的区别
如果数据存在,使用create操作失败,会提示文档已经存在,使用index则可以成功执行。

6.使用文件的方式
vi requests
curl -XPOST/PUT localhost:9200/_bulk --data-binary @request;
bulk请求可以在URL中声明/_index 或者/_index/_type

7.bulk一次最大处理多少数据量
一般建议是1000-5000个文档,如果你的文档很大,可以适当减少队列,大小建议是5-15MB

8.es的两个web访问工具
BigDesk Plugin (作者 Lukáš Vlček) 简介:监控es状态的插件,推荐!主要提供的是节点的实时状态监控,包括jvm的情况,linux的情况,elasticsearch的情况
Elasticsearch Head Plugin (作者 Ben Birch) 简介:很方便对es进行各种操作的客户端。

9.建立索引和查询的流程
建立索引的流程:
首先根据空白符进行分割再切分关键词,去除停用词,如果有英文全部转换为小写,对切分的关键词建立索引,每个关键词都有对应的id,还有一个倒排索引队列存储该关键词出现在文档的id,在该文档出现的次数,在该文档出现的位置

查询的流程:
首先根据空白符进行分割,再切分关键词,去除停用词,如果有英文全部转换为小写,将切分后的到的关键词和索引库进行匹配

中文分词器-IK
es官方提供的分词插件对中文分词效果不是很好,可以集成ik分词,对中文分词效果比较好
如果想根据自己的规则进行分词,可以自定义分词库,自定义分词库文件必须以.dic结尾,词库文件的编码为utf—8 without bom,一个词语一行,将自定义的文件库加入到ES_HOME/config/ik/ 目录下,修改ik的配置文件,重启生效

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值