elasticsearch初识

注:日常学习记录贴,下面描述的有误解的话请指出,大家一同学习。

 

elasticsearch作为一个全文搜索器,很多人喜欢拿去和solr对比,因为我之前在工作使用了elasticsearch,一直没有好好的整理,我这边的帖子只做elasticsearch的整理,有机会我会整理下solr的。

由于es涉及到的知识很多,比如涉及到怎么创建索引,或者类型,或者全文搜索,

我这里就不一一探讨了,很多基本知识大家可以自行的去翻翻开发手册。

ac363181ac3dd7c2959eb4569ec0b21dad8.jpg

下面我推荐了几个网站,方便大家学习:

1.https://elasticsearch.cn/explore/category-2  (es中文社区)

2.https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html (es 开发手册)

3.https://www.jianshu.com/p/ed7e1ebb2fb7  (es 索引相关博客)

 

一、es介绍

Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎.

Elasticsearch 是一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎. 当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:

1.分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。

2.实时分析的分布式搜索引擎。

3.可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。

二、Elasticsearch优缺点

优点
1、Elasticsearch是分布式的。不需要其他组件,分发是实时的,被叫做”Push replication”。
2、Elasticsearch 完全支持 Apache Lucene 的接近实时的搜索。
3、处理多租户(multitenancy)不需要特殊配置。
4、Elasticsearch 采用 Gateway 的概念,使得完备份更加简单。
5、各节点组成对等的网络结构,某些节点出现故障时会自动分配其他节点代替其进行工作。
缺点
1、还不够自动,不适合当前新的Index Warmup API (参考:http://zhaoyanblog.com/archives/764.html)

2、只支持json数据格式。

三、与数据库比较

es

关系型数据库

index(索引)

Db(数据库)

type(类型)

Table(表)

document(文档)

Row(行数据)

 

四、分词器

es内置有分词器,但是对中文支持不好,我在项目中使用的是IK分词器。

内置分词器

standard tokenizerstandard 
edge ngram tokenizeredgeNGram 
keyword tokenizerkeyword不分词
letter analyzerletter按单词分
lowercase analyzerlowercaseletter tokenizer, lower case filter
ngram analyzersnGram 
whitespace analyzerwhitespace以空格为分隔符拆分
pattern analyzerpattern定义分隔符的正则表达式
uax email url analyzeruax_url_email不拆分url和email
path hierarchy analyzerpath_hierarchy处理类似/path/to/somthing样式的字符串

IK分词器

Es整合ik不直接用ik官网的工具包,需要将ik工具包封装成es插件才行,这个已经有人封装好了可以在github上下载elasticsearch-analysis-ik

1:在github上下载ik插件源码

https://github.com/medcl/elasticsearch-analysis-ik

 

 

2:下载后解压缩在根目录下使用maven对其进行编译。

编译后把target/release目录下的elasticsearch-analysis-ik-1.3.0.zip上传到/usr/local/elasticsearch-1.4.4/plugins/analysis-ik目录下然后使用unzip解压。

把下载的ik插件中config目录下的文件拷贝到/usr/local/elasticsearch-1.4.4/config目录下,这些文件时ik的配置文件,custom是自定义词库文件。

3:修改elasticsearch.yml文件,把ik分词器设置为es的默认分词器

index.analysis.analyzer.default.type:ik

或者

我们在mapping也可以未每个字段配置单独的分词器。【可能有些字段不用分词,那么可用这种方式】

34eca963a06e340be3fc69d99fb5fe39a42.jpg

4:重启es,注意es中的每个节点都要进行上述配置。

自定义分词器

在实际操作中,发现

1:创建一个dic文件,编码格式必须为utf-8无BOM格式,每个词一行多个词需要换行。

2:将自定义的dic文件上传到/usr/local/elasticsearch-1.4.4/config/custom目录下

3:修改ik的配置文件/usr/local/elasticsearch-1.4.4/config/IKAnalyzer.cfg.xml,在其中指定自定义的dic文件。

4:重启es

五、es索引和数据库索引差异

es使用的是倒排索引。

数据库默认创建的索引为b-tree索引。

详情可以参考:https://www.jianshu.com/p/ed7e1ebb2fb7

 

 

转载于:https://my.oschina.net/yangok/blog/1920646

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值