1 Elasticsearch基础
Elaticsearch简称为ES,是一个开源的可扩展的分布式的全文检索引擎,它可以近乎实时的存储、检索数 据。本身扩展性很好,可扩展到上百台服务器,处理PB级别的数据。ES使用Java开发并使用Lucene作 为其核心来实现索引和搜索的功能,但是它通过简单的RestfulAPI和javaAPI来隐藏Lucene的复杂性, 从而让全文搜索变得简单。
1.1 特点
Elasticsearch的特点是它提供了一个极速的搜索体验。这源于它的高速(speed)。相比较其它 的一些大数据引擎,Elasticsearch可以实现秒级的搜索,速度非常有优势。Elasticsearch的 cluster是一种分布式的部署,极易扩展(scale )这样很容易使它处理PB级的数据库容量。最重要 的是Elasticsearch是它搜索的结果可以按照分数进行排序,它能提供我们最相关的搜索结果 (relevance) 。
1.2 企业使用场景
常见场景 常见案例
1.3 主流全文搜索方案对比
Lucene、Solr、Elasticsearch是目前主流的全文搜索方案,基于倒排索引机制完成快速全文搜索。 三者之间的区别和联系
2 elasticsearch入门使用
Elasticsearch是基于Lucene的全文检索引擎,本质也是存储和检索数据。ES中的很多概念与MySQL类 似 可以按照关系型数据库的经验去理解。
2.1 Elasticsearch IK分词器
扩展词:就是不想让哪些词被分开,让他们分成一个词
停用词:有些词在文本中出现的频率非常高。但对本文的语义产生不了多大的影响。例如英文的a、 an、the、of等。或中文的”的、了、呢等”。这样的词称为停用词。停用词经常被过滤掉,不会被进行 索引。在检索的过程中,如果用户的查询词中含有停用词,系统会自动过滤掉。停用词可以加快索引的 速度,减少索引库文件的大小。
同义词:语言博大精深,有很多相同意思的词,我们称之为同义词,比如“番茄”和“西红柿”,“馒头”和“馍”等。在 搜索的时候,我们输入的可能是“番茄”,但是应该把含有“西红柿”的数据一起查询出来,这种情况叫做 同义词查询。 注意:扩展词和停用词是在索引的时候使用,而同义词是检索时候使用。
2.2 索引操作(创建、查看、删除)
2.3 映射操作
2.4 文档增删改查及局部更新
文档,即索引库中的数据,会根据规则创建索引,将来用于搜索。可以类比做数据库中的一行数据。
3 elasticsearch 高级应用
3.1 映射高级
动态映射 自定义动态映射 如果你想在运行时增加新的字段,你可能会启用动态映射。 然而,有时候,动态映射 规则 可能不太智 能。幸运的是,我们可以通过设置去自定义这些规则,以便更好的适用于你的数据。
当 Elasticsearch 遇到一个新的字符串字段时,它会检测这个字段是否包含一个可识别的日期,比如 2014-01-01 如果它像日期,这个字段就会被作为 date 类型添加。否则,它会被作为 string 类型添加。 有些时候这个行为可能导致一些问题。想象下,你有如下这样的一个文档: { “note”: “2014-01-01” } 假设这是第一次识别 note 字段,它会被添加为 date 字段。但是如果下一个文档像这样: { “note”: “Logged out” } 这显然不是一个日期,但为时已晚。这个字段已经是一个日期类型,这个 不合法的日期 将会造成一个 异常。 日期检测可以通过在根对象上设置 date_detection 为 false 来关闭
3.2 Query DSL
3.2.1 词条级搜索(term-level queries)
可以使用term-level queries根据结构化数据中的精确值查找文档。结构化数据的值包括日期范围、IP 地址、价格或产品ID。 与全文查询不同,term-level queries不分析搜索词。相反,词条与存储在字段级别中的术语完全匹 配。
3.2.2 复合搜索(compound query)
3.3 Filter DSL
3.4 定位非法搜索及原因
3.5 聚合分析
3.6 Elasticsearch零停机索引重建
Elasticsearch是一个实时的分布式搜索引擎,为用户提供搜索服务,当我们决定存储某种数据时,在创 建索引的时候需要数据结构完整确定下来,与此同时索引的设定和很多固定配置将不能改变。当需要改 变数据结构时就需要重建索引,为此,Elasticsearch团队提供了辅助工具帮助开发人员进行索引重建。 零停机索引重建操作的三个方案,从自研功能、scroll+bulk到reindex,我们作为Elasticsearch的使用 者,三个方案的参与度是逐渐弱化的,但稳定性却是逐渐上升的,我们需要清楚地去了解各个方案的优 劣,适宜的场景,然后根据实际的情况去权衡,哪个方案更适合我们的业务模型.
3.7 Elasticsearch Suggester智能搜索建议
4 Elasticsearch高可用分布式集群
4.1 核心概念
4.2 Elasticsearch分布式架构
4.3 集群规划
4.5 分布式集群调优策略
5 Elasticsearch 数据模型构建
数据建模的意义
|