今天就跟大家聊聊有关ElasticSearch的解析及原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
一、ElasticSearch集群入门
A.什么是ElasticSearch
1.概念:
索引(index):是ElasticSearch存放数据的地方
文档(document):是ElasticSearch中存储的主要实体
文档类型:文档类型可以区分不同的对象
节点和集群:ElasticSearch支持在多台协同工作的服务器上运行
分片:节点的计算能力或硬件限制不够时,可以将数据切分,每部分是一个单独的Apache Lucene索引,称为分片(shard)
副本:为了提高查询的吞吐量或实现高可用性,可以启用分片副本,是对原始分片的一个精确拷贝
2.状态查看:
http://localhost:9200/
http://localhost:9200/_cluster/health?pretty
3.操作:通过REST操作数据,GET、POST、PUT、DELETE
二、搜索数据
A.查询和索引的过程
1.索引过程:准备发磅到ES的文档并在索引中存储文档的过程
2.搜索过程:匹配满足查询条件的文档的过程
3.分析过程:预备字段内容,并将其转换为可以写放Lucene索引的词项(term)的过程
词条化:输入文本被分词器转换为一个词条流
过滤:若干个过滤器处理词条流中的词条
4.分析器:是带有零个或多个过滤器的分词器
B.查询ElasticSearch
1.将多个简单查询封闭为一个JSON格式对象发送给ElasticSearch,称为:查询DSL
2.语法:
curl -XGET 'localhost:9200/library/book/_search?q=title:crime&pretty=true'
curl -XGET 'localhost:9200/library/book/_search?pretty=true' -d '{"query":{"term":{"title":"crime"}}}'
curl -XGET 'localhost:9200/library/book/_search?pretty=true' -d @query.json
C.基本查询
1.term:匹配给定字段有某个词项的文档
2.terms:匹配包含某些词项的文档
3.match:提取参数中难写的取值,分析这些值 ,基于它们构建适当的查询
4.multi_match:与match类似,不同在于通过fields配置可作用于多个字段上
5.query_string:支持Apache Lucene所有的查询语法
6.field:query_string查询的简化版本
7.ids:过滤返回的文档,只得到其中包含指定标识符的文档,作用在_uid字段
8.prefix:找到某个字段以给定前缀开始的文档
9.fuzzy_like_this:查询得到与给定内容相似的所有文档,基于模糊串,并选择其产生的最好的区分词项
10.fuzzy_like_this_field:与fuzzy_like_this类似,区别在于只作用在单个字段,不支持fields属性
11.fuzzy:第三类模糊查询通过计算给定词项与文档的编辑距离来得到结果,消耗CPU资源,对需要模糊匹配的场景比较有用
12.match_all:匹配索引中所有文档的查询
13.wildcard:允许我们在要查询的内容中使用符*和?,在查询体部分与term非常相似,性能差
14.more_like_this:等到与所提供文本相似的文档
15.more_like_this_field:与more_like_this相似,不同在于只作用在半单个字段,不支持fields属性
16.range:可以在某个范围内在数值型字段和字符串型字段上查找文档,只作用在单个字段上,查询的参数封装在字段的名称中
D.过滤查询结果
1.在query属性下添加filter字段就可以在任何搜索中使用过滤器
2.range:将搜索范围限制在字段取值在给定界限内的文档
3.exists:只选择有指定字段的文档
4.missing:与exists相反,还可以指定将哪些值作为空值处理
5.script:使用一个计算得到的值过过滤文档
6.type:返回符合指定类型的所有文档
7.limit:限制对给定查询的每个分片返回的文档数目
8.ids:适合需要过滤某些具体文档的场景
9.bool、and、or和not可以组合过滤器
10.使用"_name"可以命名过滤器
E.复合查询
1.bool:should可以匹配也可以不匹配、must必须匹配、must_no必须不匹配
2.boosting:将两个查询封装在一起,并降低其中一个查询所返回文档的分值
3.constant_score:用于封装另一个查询(过滤器),被封闭查询(过滤器)返回的每个文档都得到一个恒定分值,允许我们严格控制赋予被查询或过滤器匹配的每个文档的分值
4.indices:需要在多个索引上执行一个查询时非常有用
5.custom_filters_score:允许我们封装一个查询和若干个过滤器
6.custom_boost_factor:允许我们封装另外一个查询,并将该查询返回的文档的分值乘以一个指定的因子
7.custom_score:通过script为另一个查询定制分值
F.数据排序
1."sort":[{"_score":"desc"}],默认按得分最高的
G.使用脚本
1.script:包含脚本代码;lang:指示脚本使用的语言,默认mvel;params:包含参数的对象
2.可用的对象:doc,访问基于计算分值或者字段取值找到的当前文档;_source,可以访问当前文档的源,以及在其中定义的取值 ;_fields,用于访问文档中的字段取值
三、扩展结构与搜索
1.关闭动态映射:dynamic:false
2.空间索引:geo_point
四、搜索优化
1.boost权值影响排序结果
2.同义词过滤器synonym
3.跨度查询:span_term、span_first、span_near、span_or、span_not,指一个字段中开始和结束的词条位置
五、组合索引、分析和搜索
1.父子映射:_parent
2.从其他系统获取数据:river
六、搜索之外
1.统计:query统计、filter统计、terms统计、range统计、histogram统计、statistical统计、terms_stats统计、geo_distance统计
2.相似
3.反查
七、管理集群
A.监控集群状态与健康状况
1.健康状态:curl http://localhost:9200/_cluster/health?pretty
2.索引统计:curl http://localhost:9200/library/_stats?pretty
B.实例和集群状态诊断工具
1.Bigdesk插件
2.elasticsearch-head插件
3.elasticsearch-paramedic插件
4.SPM工具
C.网关
1.可以使用本地、hadoop、Amazon s3
D.节点探索
1.默认允许使用zen探索(zen discovery),并提供了多播(multicast)和单播(unicast)两种探索方法
八、问题处理
1.再平衡(rebalancing)是在集群中的各个不同的节点之间移动分片的过程
2.预热:_warmer
看完上述内容,你们对ElasticSearch的解析及原理是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。