搜索
1、ElasticSearch
爬取分词
创建倒排索引(反向索引)
索引矩阵
封装lucene,提供restful api
索引:类似mysql的数据库
类型:表
文档:行
创建:
创建索引Poems
创建类型Poem
通过 Mapping定义类型
Keyword 类型是不会分词的,直接根据字符串内容建立反向索引,Text 类型在存入 Elasticsearch 的时候,会先分词,然后根据分词后的内容建立反向索引。
master-slave结构
总结:
反向索引又叫倒排索引,是根据文章内容中的关键字建立索引。
搜索引擎原理就是建立反向索引。
Elasticsearch 在 Lucene 的基础上进行封装,实现了分布式搜索引擎。
Elasticsearch 中的索引、类型和文档的概念比较重要,类似于 MySQL 中的数据库、表和行。
Elasticsearch 也是 Master-slave 架构,也实现了数据的分片和备份。
Elasticsearch 一个典型应用就是 ELK 日志分析系统
2、性能优化
2.1、硬件优化:
内存、硬盘、CPU、网络尽量高配,特步是内存,能保证较大比例的热数据
2.2、OS系统优化:
选择CentOS 64位操作系统,使用稳定版本;
设置最大文件打开数65535;
优化相关内核参数;
2.3、软件层面:
优化GC,减少GC时间;
索引层面减少索引字段,优化分词器;
避免单个分片数据过多;
避免副本过多;
查询缓存(打分走query,不打分就filter);
锁住ES内存;
query优化。为高并发查询提供过滤器缓存和字段缓存;