Elasticsearch
文章平均质量分 60
Xlucas
做自己,做一个最普通的分享者
展开
-
Elasticsearch的介绍
Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎。它允许你快速和近实时地存储,搜索和分析大量数据。它通常用作为具有复杂搜索功能和要求的应用程序提供支持的基础引擎/技术。以下是Elasticsearch可用于的几个示例用例: 1、你运行在线网上商店,你可以允许客户搜索你销售的产品。在这种情况下,你可以使用Elasticsearch存储整个产品目录和库存,并为它们提供搜索和自动完成创原创 2016-10-27 00:08:17 · 715 阅读 · 0 评论 -
ES路由原理
1、路由算法shard=hash(routing)%number_of_primary_shards例如 一个index有3个primary shard P0,P1,P2每次增删改修改一个document的时候,都会带过来一个routing number,默认这个就是document 的_id。routing=_id,假设_id=1,会将这个routing值,传入一个函数中,产生一个routi...原创 2018-10-31 00:32:57 · 2131 阅读 · 0 评论 -
ES中document如何做写一致性
1、consistency ,one(primary shard),all(all shard),quorum(default) 我们在发送任何一个增删改操作的时候,都可以带上一个consistency参数,指明我们想要的写一致性是什么 &nb原创 2018-11-04 00:34:17 · 448 阅读 · 0 评论 -
ES查询原理和timeout讲解
ES的查询过程1、客户端发送请求到任意一个node,成为coordinate node2、coordinate node对document进行路由,将请求转发到对应的node(primary或者replicanode上)上,此时使用round-robin随机轮询算法,在primary shard以及其所有的replica中随机选择一个,让读请求负载均衡3、接收请求的node返回documen...原创 2018-11-05 00:48:27 · 8626 阅读 · 8 评论 -
ES中bulk的json的原理
前面我们讲解到ES在做批处理的时候,采用的多行json方式。这种有什么好处呢?1、bulk中的每个操作都可能要转发到不同的node的shard去执行2、如果采用比较良好的json数组格式(1)将json数组解析为JSONArray对象,这个时候,整个数据,就会在内存中出现一份一模一样的拷贝,一份数据是json文本,一份数据是JSONArray对象(2)解析json数组里的每个json,对每...原创 2018-11-05 00:50:26 · 946 阅读 · 0 评论 -
ES的查询接口
1、什么是query DSLGET /_search{ "query": { "match_all": {} }}query 中有哪些query_name全部查询出来 match allGET /web/info/_search --查询所有的文档{ "query": { "match_all": {} }}...原创 2018-11-11 00:38:51 · 5796 阅读 · 0 评论 -
ES中search中参数讲解
1、搜索出来的一大堆参数,每个参数具体是什么意思took:表示整个搜索请求花费了多少毫秒hits.total:本次搜索,返回了几条结果hits.max_score:本次搜索的所有结果中,最大的相关度分数是多少。每一条document对于search的相关度,越相关,_score分数越大,排位越靠前hits.hits:默认查询出前10条数据,完整数据,_score降序排序shards:sh...原创 2018-11-07 23:07:06 · 5700 阅读 · 0 评论 -
ES字符串排序问题
如果对一个text field进行排序,结果往往不准确,因为分词后是多个单词,再排序就不是我们想要的结果了通常解决方案是,将一个text field建立两次索引,一个分词,用来进行搜索;一个不分词,用来进行排序创建索引在ES6中没有String类型了,如果是不能被检索需要定义为keywordPUT /web5{ "mappings": { "article": { ...原创 2018-11-14 00:13:12 · 7622 阅读 · 2 评论 -
ES中mapping讲解
注意:以下都是基于ES6操作的准备数据PUT /web/info/1{ "post_date": "2018-11-01", "title": "the first info", "content": "the first info in this web", "author_id": "xlucas"}PUT /web原创 2018-11-08 22:16:08 · 6761 阅读 · 0 评论 -
ES分词算法
算法介绍1、relevance score算法,就是计算出,一个索引中的文本,与搜索文本,他们之间的关联匹配程度2、ES使用的是,term frequency/inverse document frequency算法,简称TF/IDF算法3、term frequency:搜索文本中的各个词条在field文本中出现了多少次,出现次数越多,就越相关4、inverse document freq...原创 2018-11-15 23:34:07 · 3932 阅读 · 0 评论 -
ES中scroll技术
如果一次性要查询出一大批的数据,那么性能会很差,此时一般采用scoll滚动查询,一批一批的查询,直到所有的数据查询完成使用scoll滚动搜索,可以先搜索一批数据,然后下次再搜索一批数据,以此类推,直到搜索出全部的数据来scoll搜索会在第一次搜索的时候,保存一个当时的视图快照,之后只会基于该旧的视图快照提供数据搜索,如果这个期间数据变更,是不会让用户看到的采用基于_doc进行排序的方式,性能...原创 2018-11-16 00:41:38 · 8351 阅读 · 0 评论 -
ES分布式架构知识点
1、ES 分布式的特性透明隐藏特性ES是一套分布式的系统,里面隐藏了复杂的分布式机制,分片机制,集群发现机制,shard负载均衡,shard副本,请求路由,集群扩容,shard重分配2、ES的扩容机制垂直扩容:采用配置好的机器替换原来的机器水平扩容:增加相同配置的机器3、增加和减少节点时数据rebalance4、Master节点Master节点不承载所有的请求,所以不会是一个单点瓶颈...原创 2018-10-25 00:39:45 · 2012 阅读 · 0 评论 -
ES批量操作
1、ES批量查询的好处批量查询可以缩减网络的开销2、mget的语法如果我们要查询某个索引下面某个类型下面的document数据,之前需要一条一条的查询GET /test_index/test_type/6GET /test_index/test_type/10如果我们用mget的方式,那么应该怎么查询,可以用下面这个语句替换GET /_mget{ "docs":[ {...原创 2018-10-30 00:26:14 · 2081 阅读 · 2 评论 -
FileBeat+kafka进行日志实时传输
前面我们聊到了filebeat+ELK来解决日志的问题,今天我们来聊聊filebeat+kafka解决日志实时传输的问题,首先filebeat只是一个简单的日志接受工具和日志发送工具,我们可以用filebeat部署到logserver上面,在用kafka做消息管道将日志传输出去。今天我们主要讲讲安装 kafka和filebeat的配置我们就不讲解了 如果还是不会的同学可以参考之前的文章1、配原创 2017-12-25 01:11:51 · 22746 阅读 · 10 评论 -
ELK+Filebeat的安装和联调
ELK Stack 简介 ELK 不是一款软件,而是 Elasticsearch、Logstash 和 Kibana 三种软件产品的首字母缩写。这三者都是开源软件,通常配合使用,而且又先后归于 Elastic.co 公司名下,所以被简称为 ELK Stack。根据 Google Trend 的信息显示,ELK Stack 已经成为目前最流行的集中式日志解决方案。 ● Elasticsearc原创 2017-12-18 00:50:20 · 2027 阅读 · 0 评论 -
elasticsearch6.x集群安装
elasticsearch 安装环境 操作系统:centos6.5 64位 版本:elasticsearch-6.1.1 jdk版本:1.8 安装用户:etl节点安排 10.20.23.29 master 10.20.23.38 负载均衡 10.20.23.41 data 10.20.23.42 data 10.20.23.82 data解压elasticsearch原创 2018-01-29 23:17:25 · 6416 阅读 · 0 评论 -
大白话ElasticSearch是什么以及应用场景
ElasticSearch是一个分布式,高性能、高可用、可伸缩的搜索和分析系统 看了上面这段话,估计很多人都懵了,这个是啥。我们先从搜索说起,先介绍下面几点 1、什么是搜索 百度、Google:我们想寻找一个我们喜欢的电影或者书籍就会去百度或者Google搜索一下。 互联网搜索:电商搜索商品,招聘网站搜索简历或者岗位 IT系统的搜索:员工管理搜索,会议管理搜索 2、如果用数据库做搜索会...原创 2018-09-09 00:46:43 · 51597 阅读 · 13 评论 -
ElasticSearch的核心概念讲解
Lucene和elasticsearch的对比 ● lucene,最先进、功能最强大的搜索库,直接基于lucene开发,非常复杂,api复杂(实现一些简单的功能,写大量的java代码),需要深入理解原理(各种索引结构) ● elasticsearch,基于lucene,隐藏复杂性,提供简单易用的restful api接口、java api接口(还有其他语言的api接口) (1)分布式的文档...原创 2018-09-10 00:55:05 · 517 阅读 · 0 评论 -
ElasticSearch健康检查和CRUD
目前为了快速的学习ES我们可以在window环境下面搭建ES和kibana es提供了一套api,叫做cat api,可以查看es中各种各样的数据健康检查GET /_cat/health?vepoch timestamp cluster status node.total node.data shards pri relo init unassign pendin...原创 2018-09-13 00:46:05 · 958 阅读 · 0 评论 -
ElasticSearch的各种查询
ElasticSearch多种搜索方式1、query string search2、query DSL3、queryfilter4、full-tex search5、phrase search6、highlight search1、query string search搜索全部信息格式:GET /index/type/_searchGET /employee/user/_...原创 2018-10-12 00:43:17 · 652 阅读 · 0 评论 -
ES的聚合分析和钻取功能
第一:计算每个兴趣点的同学个数GET /employee/user/_search{ "size": 0, "aggs": { "group_by_join": { "terms": { "field": "join" } } }}运行以后就出现了如下的错误,这个上面标红的那个地方讲到了需要将这个参数设置为tr原创 2018-10-14 22:09:22 · 928 阅读 · 0 评论 -
ES中partial update的使用
1、什么是partial updatePUT /index/type/id 创建文档&替换文档,就是一样的语法(1)应用程序先发起一个get请求,获取到document,展示到前台界面,供用户查看和修改(2)用户在前台界面修改数据,发送到后台(3)后台代码,会将用户修改的数据在内存中进行执行,然后封装好修改后的全量数据(4)然后发送PUT请求,到es中,进行全量替换(5)es将...原创 2018-10-29 00:28:55 · 663 阅读 · 0 评论 -
ES乐观锁的控制
任何一个系统都需要考虑并发请求的场景,ES也不例外,在ES中使用了乐观锁来并发控制的1、ES如何基于_version进行乐观锁并发控制PUT /test_index/test_type/3{ "test_field":"test"}第一次创建一个document的时间,它的_version内部版本号是1,以后,每次对这个document执行修改或者删除操作,都会对这个_versi...原创 2018-10-26 00:35:06 · 1113 阅读 · 0 评论 -
ES中搜索请求的讲解
ES中一个搜索请求是怎么流转的1、搜索请求发送到某一个coordinate node,构建一个priority queue,长度以paging操作from和size为准,默认为102、coordinate node将请求转发到所有shard,每个shard本地搜索,并构建一个本地priority queue3、各个shard将自己的priority queue返回给coordinate no...原创 2018-11-18 22:48:18 · 2456 阅读 · 0 评论