Elasticsearch

ElasticSearch是一个分布式,高性能、高可用、可伸缩的搜索和数据分析引擎。文档型nosql数据库。
	
ES是一个近实时(NRT)的搜索引擎,一般从添加数据到能被搜索到只有很少的延迟(大约是1s),而查询数据是实时的。kibana是可视化操作页面(一般我们排问题才会用吧)。

比如在网上商城系统里实现搜索商品的功能也会用到ES。搜索商品的时候为啥要用ES呢?用sql的like进行模糊查询不香吗?
我们要买苹果吃,咱们想买天水特产的花牛苹果,然后在搜索框输入天水花牛苹果,这时候咱们希望搜索到所有的售卖天水花牛苹果的商家,但是如果咱们技术上根据这个天水花牛苹果使用sql的like模糊查询,是不能匹配到诸如天水特产花牛苹果,天水正宗,果园直送精品花牛苹果这类店铺的。

es索引就是库/表,es的文档就是类似一条mysql记录,被序列化成json格式,回想一下在字节跳动的es的mapping设置和setting设置。

节点:一个节点就是一个ES实例,其实本质上就是一个java进程。

Master Eligible节点:每个节点启动后,默认就是Master Eligible节点。Master Eligible可以参加选主流程,并成为Master节点(当第一个节点启动后,它会将自己选为Master节点);
注意:每个节点都保存了集群的状态,只有Master节点才能修改集群的状态信息。

Data节点:可以保存数据的节点。主要负责保存分片数据,利于数据扩展。

Coordinating 节点:负责接收客户端请求,将请求发送到合适的节点,最终把结果汇集到一起。每个节点默认都起到了Coordinating node的职责。

分片:了解分布式或者学过mysql分库分表的应该对分片的概念比较熟悉,ES里面的索引可能存储大量数据,这些数据可能会超出单个节点的硬件限制。ES提供了将索引细分为多个碎片的功能,这就是分片。
在创建索引时,只需要咱们定义所需的碎片数量就可以了,每个分片都可以看作是一个完全功能性和独立的索引,可以托管在集群中的任何节点上。

分片有什么好处和注意事项呢?
通过分片技术,咱们可以水平拆分数据量,同时它还支持跨碎片(可能在多个节点上)分布和并行操作,从而提高性能/吞吐量。

为了实现高可用,ElasticSearch允许将索引分片的一个或多个复制成所谓的副本分片。副本分片永远不会分配到复制它的原始或主分片所在的节点上;
可以提高扩展搜索量和吞吐量,因为ES允许在所有副本上并行执行搜索。

默认情况下,ES中的每个索引都分配5个主分片,并为每个主分片分配1个副本分片。

ES 是RESTful 风格的系统,需要先掌握RESTful的四个关键词:PUT(修改),POST(添加),DELETE(删除),GET(查询)。其中在ES里面PUT和POST的界限并不是很分明,有时候PUT也作为添加。

咱们知道Elasticsearch之所以模糊查询这么快,是因为采用了倒排索引,而倒排索引的核心就是分词,把text格式的字段按照分词器进行分词并编排索引。

内置分词器和其他分词器
ik分词器是根据什么来分词的呢?如果有些特殊的词汇比如人名,店名,网名,想根据自己的要求特殊处理来分词,能不能解决呢?
ik分词器本身维护了一个超大的词汇文本,里面有非常多的中文词汇。如果要根据自己的特殊词汇来切分,咱们可以把想要切分成的词汇加入到这个文件里面。

kibana查询出来的字段都是什么含义呢?
took:Elasticsearch运行查询需要多长时间(以毫秒为单位);
timed_out :搜索请求是否超时;
_shards 搜索了多少碎片,并对多少碎片成功、失败或跳过进行了细分;
_max_score 找到最相关的文档的得分;
hits.total.value :找到了多少匹配的文档;
hits.sort :文档排序后的位置(比如上面查询的1,2,3…) ;
hits._score:文档的相关性评分

查询时用有一套和mysql类似的条件筛选语句,具体不细列了,就是当时在字节工作时代码查询前构造查询条件时用的那些。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

成长是自己的事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值