ElasticSearch的解析及原理是什么

今天就跟大家聊聊有关ElasticSearch的解析及原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

10年积累的成都网站设计、成都网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有阿拉善盟免费网站建设让你可以放心的选择与我们合作。

一、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的解析及原理是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


名称栏目:ElasticSearch的解析及原理是什么
当前路径:http://azwzsj.com/article/jjpicj.html