Elasticsearch
Elasticsearch高性能分布式搜索引擎搜索引擎技术排名Elasticsearch: 开源的分布式搜索引擎Splunk: 商业项目Solr: Apache的开源搜索引擎Elasticsearch结合Kibana、Logstash、Beats是一整套技术栈被叫做ELK。被广泛应用在日志数据分析、安全监控等领域。倒排索引elasticsearch采用倒排索引文档document每条数据就是一个文档词条term文档按照语义分成的词语业务流程文档、词条、正向索引与倒排索引说明每一条数据就是一个文档。对文档中的内容分词得到的词语就是词条。基于文档id创建索引的方式称为正向索引其特点是根据id查询快但是查询词条时必须先找到文档而后判断是否包含词条。对文档内容分词对词条创建索引并记录词条所在文档的id这种方式称为倒排索引查询时会先根据词条查询到文档id而后根据文档id查询文档。IK分词器中文分词往往需要根据语义分析比较复杂这就需要用到中文分词器例如IK分词器。IK分词器是林良益在2006年开源发布的其采用的正向迭代最细粒度切分算法一直沿用至今。其安装的方式也比较简单只要将资料提供好的分词器放入elasticsearch的插件目录即可。在Kibana的DevTools中可以使用下面的语法来测试IK分词器POST /_analyze { analyzer: standard, text: 黑马程序员学习java太棒了 }语法说明POST请求方式/_analyze请求路径这里省略了http://192.168.150.101:9200由kibana帮我们补充请求参数json风格analyzer分词器类型这里是默认的standard分词器text要分词的内容IK分词器允许我们配置拓展词典来增加自定义的词语。分词器的作用是什么创建倒排索引时对文档分词用户搜索时对输入的内容分词IK分词器有几种模式ik_smart智能切分粗粒度ik_max_word最细切分细粒度IK分词器如何拓展分词器词库中的词条利用config目录的IkAnalyzer.cfg.xml文件添加拓展词典在词典中添加拓展词条ES基础概念索引index相同类型的文档的集合对比传统mysql数据库索引库操作- Mapping 映射属性Mapping映射属性mapping是对索引库中文档的约束常见的mapping属性包括type字段数据类型常见的简单类型有字符串text可分词的文本、keyword精确值例如品牌、国家、ip地址数值long、integer、short、byte、double、float、布尔boolean日期date对象objectindex是否创建索引默认为trueanalyzer使用哪种分词器properties该字段的子字段索引库操作-索引库的CRUDPUT(新增(不支持修改索引库和mapping一旦创建无法修改但是可以添加新的字段语法如下PUT /索引库名/_mapping { properties: { 新字段名:{ type: integer } } }示例PUT /heima/_mapping { properties: { age:{ type: integer } } }文档操作-文档CRUD文档操作-批量处理Elasticsearch中允许通过一次请求中携带多次文档操作也就是批量处理语法格式如下POST /_bulk { index : { _index : 索引库名, _id : 1 } } { 字段1 : 值1, 字段2 : 值2 } { index : { _index : 索引库名, _id : 1 } } { 字段1 : 值1, 字段2 : 值2 } { index : { _index : 索引库名, _id : 1 } } { 字段1 : 值1, 字段2 : 值2 } { delete : { _index : test, _id : 2 } } { update : {_id : 1, _index : test} } { doc : {field2 : value2} }