elasticsearch
elasticsearch系列
ChaseDreamBoy
ChaseDreamBoy
展开
-
linux安装elasticsearch
elasticsearch下载安装、检查安装[1]: max number of threads [2048] for user [dreamboy] is too low, increase to at least [4096][2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]原创 2018-06-05 11:17:33 · 299 阅读 · 0 评论 -
elasticsearch检查集群的健康状况
一、GET _cluster/health在kibana的Dev Tools界面输入一下代码即可以查看集群的健康状况:GET _cluster/healthkibana显示:二、cat apies提供了一套api,叫做cat api,可以查看es中各种各样的数据GET /_cat/health?v三、如何快速了解集群的健康状况green:每个索引的p...原创 2018-06-05 15:00:56 · 4184 阅读 · 0 评论 -
elasticsearch索引操作
一、快速查看集群中有哪些索引GET /_cat/indices?v二、创建索引# PUT /索引名?prettyPUT /log_index?pretty三、创建索引指定shard例:PUT /my_index2{ "settings":{ "number_of_shards": 3, "number_of_replicas": 1...原创 2018-06-05 15:24:04 · 340 阅读 · 0 评论 -
elasticsearch的基础分布式架构
一、elasticsearch对复杂分布式机制的透明隐藏特性分片机制:分到哪个shard中?怎么进行分片的?cluster discovery:集群发现机制shard负载均衡:es会自动进行均匀分配,以保持每个节点的均衡的读写负载请求shard副本,请求路由,集群扩容,shard重分配二、rebalance(重新负载)总有一些服务器的负载可能会重一些,承载的请求和请求量会大一...原创 2018-06-05 16:46:37 · 314 阅读 · 0 评论 -
elasticsearch:shard和replica机制
shard&replica机制:index包含多个shard每个shard都是一个最小工作单元,承载部分数据,lucene实例,完整的建立索引和处理请求的能力增减节点时,shard会自动在nodes中负载均衡primary shard和replica shard,每个document肯定只存在于某一个primary shard以及其对应的replica shard中,不可能存在...原创 2018-06-05 17:04:54 · 7374 阅读 · 0 评论 -
elasticsearch _multi-index和multi-type搜索模式
一次性搜索多个index和多个type下的数据搜索所有index,所有type下的所有数据:/_search同时搜索两个index下的数据:/index1,index2/_search按照通配符去匹配多个索引:/*1,*2/_search搜索一个index下指定的type的数据:/index1/type1/_search搜索一个index下多个type的数据:/index1/type...原创 2018-06-08 09:05:15 · 1479 阅读 · 0 评论 -
elasticsearch _search结果解析
kibana中输入:GET /_search 会返回一下结果:{ "took": 9, # took:整个搜索请求花费多少毫秒 "timed_out": false, "_shards": { # shards:shards fail的条件,primary和replica全部挂掉,不影响其他shard。 # 默认情况,一个搜索请求,会发送到一个ind...原创 2018-06-07 18:33:09 · 4844 阅读 · 0 评论 -
elasticsearch search timeout机制
一、timeouttimeout:默认无timeout,latency平衡completeness,手动指定timeout:timeout=10ms,timeout=1s,timeout=1mGET /_search?timeout=10m二、timeout机制指定timeout,就能在timeout时间范围内,将搜索到的部分数据(也可能全部都搜索到),直接返回给client...原创 2018-06-07 19:27:18 · 12737 阅读 · 1 评论 -
elasticsearch 分页搜索以及deep paging性能问题
一、分页搜索语法:GET /index/type/_search?from=0&size=3“from”: 起始条数,从0开始 “size”: 每页显示条数二、deep pagingdeep paging:就是分页搜索特别深前提: index、6w条数据、3个primary shard、每个primary shard 2w条数据,每页10条数据,搜索第100...原创 2018-06-08 09:04:53 · 697 阅读 · 1 评论 -
elasticsearch query string search与_all metadata
一、query string基础语法# 搜索字段(field)test_field中含有test的documentGET /test_index/test_type/_search?q=test_field:test# 与前面相同,搜索字段(field)test_field中含有test的documentGET /test_index/test_type/_search?q=+test...原创 2018-06-08 09:37:45 · 607 阅读 · 0 评论 -
elasticsearch 精确匹配与全文搜索
elasticsearch的两种搜索模式:exact value、full text。一、exact value(精确匹配)介绍: 比如搜索2017-01-01,使用exact value搜索的时候,必须输入2017-01-01,才能搜索出来;如果输入一个01,是搜索不出来的。二、full text(全文搜索)缩写 vs. 全程:cn vs. china,搜索cn,也可以将c...原创 2018-06-08 09:57:16 · 11545 阅读 · 0 评论 -
elasticsearch mapping介绍
一、介绍mapping: 自动或手动为index中的type建立的一种数据结构和相关配置。ps:有点相当于mysql中的表结构往es里面直接插入数据,es会自动建立索引,同时建立type以及对应的mappingmapping中就自动定义了每个field的数据类型不同的数据类型(比如说text和date),可能有的是exact value,有的是full textexact va...原创 2018-06-08 11:19:38 · 717 阅读 · 0 评论 -
elasticsearch _bulk api的奇特json格式与底层性能优化关系
一、es处理标准格式json串的流程使用良好的json数组格式,允许任意换行,可读性非常好,但是es拿到那种标准格式的json串以后,要按照下述流程去进行处理将json数组解析为JSONArray对象,这个时候,整个数据,就会在内存中出现一份一模一样的拷贝,一份数据是json文本,一份数据是JSONArray对象解析json数组里的每个json,对每个请求中的document进行路由...原创 2018-06-07 17:47:54 · 855 阅读 · 0 评论 -
elasticsearch bulk批量增删改
一、bulk的操作类型delete:删除一个文档,只要1个json串就可以了,其他都需要两个json串{ "delete": { "_index":"test_index", "_type": "test_type", "_id": "2" }} create:PUT /index/type/id/_create,强制创建,id已存在会失败,但不影响已成原创 2018-06-07 10:23:23 · 1619 阅读 · 0 评论 -
elasticsearch document 数据路由
一、介绍数据路由(routing):一个index的数据会被分为多片,每片都在一个shard中;所以,一个document只能存在于一个shard中。当创建document时,es需要决定document放在该index的那个shard上,这个过程称为document routing(数据路由)。二、路由算法shard = hash(routing) % number_of_prima...原创 2018-06-07 10:39:56 · 409 阅读 · 0 评论 -
elasticsearch document 增删改原理
对于集群而言,任意一个node都知道document在哪个node上的(路由算法),所以,对于client来说,请求任和一个node都是一样的。client选择任一node,将增(删、改)请求发送到改node改node接收到request,变为coordinating node(协调节点)coordinating node(协调节点)将请求发送到对应的primary shard,因为是增删...原创 2018-06-07 10:55:24 · 537 阅读 · 0 评论 -
elasticsearch 写一致性原理以及quorum机制
一、简介我们在发送任何一个增删改操作的时候,比如说: put /index/type/id,都可以带上一个consistency参数,指明我们想要的写一致性是什么,例:put /index/type/id?consistency=quorum二、consistencyconsistency的三个值:one(primary shard)、all(all shard)、quorum(d...原创 2018-06-07 11:15:43 · 1221 阅读 · 1 评论 -
elasticsearch document id 生成方式
一、手动指定document id根据应用情况来说,是否满足手动指定document id的前提: 一般来说,是从某些其他的系统中,导入一些数据到es时,会采取这种方式,就是使用系统中已有数据的唯一标识,作为es中document的id。举个例子,比如说,我们现在在开发一个电商网站,做搜索功能,或者是OA系统,做员工检索功能。这个时候,数据首先会在网站系统或者IT系统内部的数据库中,会先有一...原创 2018-06-05 18:55:17 · 4585 阅读 · 0 评论 -
elasticsearch document 查询原理
client选择任一node发送get document请求node获得请求后变为coordinating node(协调节点),对document进行路由,得到primary shard的位置coordinating node(协调节点)采取round-robin随机轮询算法,尽量让primary shard与所有的replica shard 均匀服务请求,达到负载均衡的效果实际的sha...原创 2018-06-07 13:43:11 · 819 阅读 · 0 评论 -
elasticsearch聚合分析
一、前提需要将文本field的fielddata属性设置为true:PUT /ecommerce/_mapping/product{ "properties": { "tags": { "type": "text", "fielddata": true } }}其中: “tags”:指需要设置fielddata的field的名称...原创 2018-06-05 16:24:29 · 224 阅读 · 0 评论 -
elasticsearch 分词器
一、分词器分词器 就是把一段句子拆分成一个一个的单个的单词,同时对每个单词进行normalization(时态转换,单复数转换)。主要作用就是:切分词语,normalization(提升recall召回率)。normalization: 建立倒排索引的时候,会执行一个操作,对拆分出的各个单词进行相应处理,以提升后面搜索的时候能够搜索到的相关联的文档的概率。像时态转换、单复数转换、大小写转换...原创 2018-06-08 11:03:36 · 1163 阅读 · 0 评论 -
elasticsearch版本控制
一、基于_version进行乐观锁并发控制先构造一条数据出来PUT /test_index/test_type/1{ "test_field": "test test"}模拟两个客户端,都获取到了同一条数据GET test_index/test_type/1其中一个客户端,先更新了一下这个数据,同时带上数据的版本号,确保说,es中的数据的版本号,跟客户端中的数据的版本号...原创 2018-06-07 09:42:23 · 686 阅读 · 0 评论 -
elasticsearch容错过程分析
宕机瞬间master node 宕机的一瞬间,该节点上的primary shard就没有了,此时状态就不是active status;那么就不是集群中所有的primary shard都是active的了。容错步骤一master选举,es自动选举另一个node成为master,承担起master的责任。容错步骤二新master将丢失掉的primary shard的某个re...原创 2018-06-05 17:25:50 · 610 阅读 · 0 评论 -
elasticsearch的多种搜索方式
一、query string search搜索当前type下的所有数据:GET /index/type/_search例如: 结果解析:took:表示耗费了几毫秒timed_out:是否超时_shards:数据拆成了5个分片,所以对于搜索请求,会打到所有的primary shard(或者是它的某个replica shard也可以)hits.total:查询结果的数...原创 2018-06-05 15:57:42 · 588 阅读 · 0 评论 -
elasticsearch mget批量查询
一、介绍批量查询的好处就是一条一条的查询,比如说要查询100条数据,那么就要发送100次网络请求,这个开销还是很大的,如果进行批量查询的话,查询100条数据,就只要发送1次网络请求,网络请求的性能开销缩减100倍。mget的重要性可以说mget是很重要的,一般来说,在进行查询的时候,如果一次性要查询多条数据的话,那么一定要用batch批量操作的api,尽可能减少网络开销次数,可...原创 2018-06-07 09:56:09 · 617 阅读 · 0 评论 -
elk + kafka 简单搭建日志分析系统
elk + kafka 简单搭建日志分析系统文介绍使用ELK(elasticsearch、logstash、kibana) + kafka来搭建一个日志系统。想象一下淘宝,它可以对不同的用户实现推荐不同的产品,它主要是通过分析我们使用淘宝产生的日志来进行推荐的。对于比较小的项目,可以把日志储存到DB中。但是并发量高了怎么办?这时候出现了ELK,但是对于双11这种活动时,那么多人同时访问,单原创 2018-02-05 17:53:00 · 3307 阅读 · 1 评论