
ELK
mn_kw
喜欢研究大数据组件技术,深入内核,后续会更新工作级别的解决方案
展开
-
Elasticsearch理解
Elasticsearch,其实就是一个分布式的文档数据存储系统,ES是分布式的,文档数据存储系统,文档数据,存储文档数据:es额可以存储和操作json文档类型的数据,而且这也是es的核心数据结构存储系统:es额可以对json文档类型的数据进行存储,查询,创建,更新,删除,等操作,其实相当于一个NoSQL的存储系统了 适合什么类型的应用程序呢?1. 数据量较大,es的分布式本质...原创 2018-08-31 10:14:48 · 400 阅读 · 0 评论 -
es multi-inde和multi-type搜索模式
如何一次性搜索多个index和多个type下的数据/_search : 所有索引,所有type下的所有数据都搜索出来/index/_search :指定index,搜索其下所有type的数据/index1,index2/_search : 同时搜索俩个index下的数据/*1,*2/_search: 按照通配符去匹配多个索引/index/type/_search : 可以搜索一个ind...原创 2018-09-12 17:36:22 · 214 阅读 · 0 评论 -
ES deeping pageing
deep pageing在分页的时候会出现deep pageing 就是说搜索的特别深,比如共有60000条数据,每个shard上分到了20000条数据,每页是10条数据,这个时候,你要搜索到第1000页每个shard,其实都要返回的是最后十条数据,看起来好像是每个shard上的10001-10010,10条数据,不是这样理解的你的请求首先可能打倒不包含这个index的shard的nod...原创 2018-09-13 08:50:21 · 407 阅读 · 1 评论 -
es 查看mapping
mapping,就是index的type的元数据,每个type都有自己一个mapping,决定了数据类型,建立倒排索引的行为,还有进行搜素的行为。mapping核心的数据类型stringbyte,short,integer,longfloat,doublebooleandate查看mappingGET /index/_mapping/type定义string类型数据如何建立...原创 2018-09-13 14:31:15 · 32090 阅读 · 0 评论 -
ES 数据结果底层存储
底层存储"address":{ "country":"china", "province":"guangdong", "city":"guangzhou"}像这种格式底层存储是这个样的{ address.country : [china] address.province: [guangdong] address.原创 2018-09-13 14:31:54 · 3057 阅读 · 0 评论 -
ES query DSL
_search api基础语法介绍GET /search{}GET /index1,index2/type1/search{}GET /_search{ "from":0, "size":10}2. http 协议中get是否可以带上request body一般用post请求可以带上request body,以下写法POST /_search{ ...原创 2018-09-13 14:32:40 · 592 阅读 · 0 评论 -
ES query DSL应用
1. match_allGET /index/type/_search{ "query":{ "match_all":{ } }}2. matchGET /index/type/_search{ "query":{ "match":{ "name":"jack"原创 2018-09-13 14:51:55 · 227 阅读 · 0 评论 -
ES 定位不合法的搜索以及定制搜索结果排序规则
如何定位不合法的搜索以及其原因GET /index/type/_validate/query?explain{ "query":{ "matc":{ "name":"jack" } }}这里match写错如何定制搜索结果排序规则GET /index/type/_search{ "query":{ ...原创 2018-09-14 09:12:26 · 566 阅读 · 0 评论 -
ES 解决字符串的排序问题以及相关度评分TF&IDF算法
如何将一个field索引俩次来解决字符串的排序问题如果对一个stringfield进行排序,结果往往不准确,因为分词后是多个单词,再排序就不是我们想要的结果了通常的解决方案是,将一个string field建立俩次索引,一个分词,用来进行搜索,一个不分词,用来进行排序相关度评分TF&IDF算法TF:搜索文本中的各个词条在field文本中出现了多少次,出现次数越多,就越相关IDF...原创 2018-09-14 09:13:31 · 1268 阅读 · 0 评论 -
ES doc value和query phase
doc value搜索的时候,要依靠倒排索引;排序的时候要依靠正排索引,看到每个document的每个field,然后进行排序,所谓的正排索引,其实就是doc values在建立索引的时候,一方面会建立倒排索引,以供搜索使用,一方面会建立正排索引,也就是doc value,以供排序,聚合,过滤等操作使用doc value是被保存在磁盘上的,此时如果内存足够,os会自动将其缓存在内存中,性能...原创 2018-09-14 09:15:01 · 465 阅读 · 0 评论 -
ES 中跳跃问题和查询大量数据问题
1. preference决定了哪些shard会被用来执行搜索操作bouncing result问题,俩个document排序,field值相同,不同的shard上,可能排序不同,每次请求轮询打到不同的replica shard上每次页面上看到的搜索结果的排序都不一样,这就是bouncing result,也就是跳跃的结果解决方案: 将preference设置为一个字符串,比如说user...原创 2018-09-14 09:15:56 · 1511 阅读 · 0 评论 -
ES 重建索引
重建索引一个field的设置是不能被修改的,如果要修改一个Field,那么应该重新按照新的mapping,建立一个index,然后将数据批量查询出来,重新用bulk api写入index中批量查询的时候,建议采用scroll api,并且采用多线程并发的方式来reindex数据,每次scoll就查询指定日期的一段数据,交个一个线程即可1. 一开始,依靠dynamic mapping 插入数...原创 2018-09-14 10:33:31 · 2363 阅读 · 1 评论 -
document写一致性
1. 客户端选择一个node发送请求过去,这个node就是coordinating node(协调节点)2. coordinating node,对document进行路由,将请求转发给对应的node(有primary shard)3. 实际的node上的primary shard处理请求,然后将数据同步到replica node4. coordinating node,如果发现primar...原创 2018-09-12 17:06:04 · 169 阅读 · 0 评论 -
ES document路由原理
1. document路由到shard上是什么意思?一个index的数据会被划分为多片,每片都在一个shard中,所以说,一个document,只能存在于一个shard中,当客户端创建document的时候,es此时就需要决定说,这个document是放在这个index的哪个shard上,这个过程就是数据路由2. 路由算法:shard = hash(routing)%number_of_pr...原创 2018-09-12 16:23:19 · 625 阅读 · 0 评论 -
es mget批量查询
批量查询的好处就是一条一条的查询,比如说要查询100条数据,那么就要发送100次网络请求,这个开销还是很大的,如果进行批量查询的话,查询100条数据,就只要发送1次网络请求,网络请求性能开销缩减100倍2. meget的语法GET /_mget{ "docs":[ { "_index":"test_index", ...原创 2018-09-12 15:57:33 · 907 阅读 · 0 评论 -
Elasticsearch的功能
1. 分布式的搜索引擎和数据分析引擎搜索:百度,网站的站内搜索数据分析:电商网站,最近7天牙膏这种商品销量排名前10的商家有哪些2. 全文检索,结构化检索,数据分析全文检索:我想搜索商品名称包含牙膏的商品, select * from products where product_name like "%牙膏%"结构化检索:我想搜索商品分类为日化用品的商品有哪些 select ...原创 2018-08-29 20:18:05 · 219 阅读 · 0 评论 -
elasticsearch的核心概念
1. Near Realtime(NRT): 近实时,俩个意思,从写入数据到数据可以被搜索到有一个小延迟(大概一秒);基于es执行搜索和分析可以达到秒级2. Cluster: 集群,包含多个节点,每个节点属于那个集群是通过一个配置(集群的名称,默认是elasticsearch)来决定的3. Node:节点,集群中的一个节点,节点也有一个名称(默认是随机分配的),节点名称很重要(运维管理)...原创 2018-08-29 21:19:43 · 182 阅读 · 0 评论 -
Elasticsearch 简单操作(集群管理)
1. 快速检查集群的健康状况GET /_cat/health?v如何快速的了解集群的监控状况? green、yellow、red?green: 每个索引的primary shard和replica shard都是active状态的yellow:每个索引的primary shard都是active状态的,但是部分replica shard不是active状态,处于不可用的状态r...原创 2018-09-11 11:29:42 · 325 阅读 · 0 评论 -
ES的搜索方式
1. query string search搜索全部商品:GET /ecommerce/product/_search搜索商品名称中包含yagao的商品,而且按照售价降序排序:GET /ecommerce/product/_search?q=name:yagao&sort=price:desc适用于临时的在命令行使用一些工具,比如curl,快速的发出请求,来检索想要的信息;...原创 2018-09-11 13:59:17 · 2377 阅读 · 0 评论 -
ES基础分布式博客
1. Elasticsearch对复杂分布式机制的透明隐藏特性2. Elasticsearch的垂直扩容与水平扩容3. 增减节点时数据的rebalance4. master节点5. 节点对等的分布式架构1. Elasticsearch对复杂分布式机制的透明隐藏特性Elasticsearch是一套分布式的系统,分布式是为了应对大数据量隐藏了复杂的分布式机制分片机制(之前的试验随随...原创 2018-09-11 15:23:42 · 216 阅读 · 0 评论 -
es手动生成id和自动生成id
1. es手动指定document id1. 根据应用情况来说,是否满足手动指定document id的前提一般来说,是从某些其他的系统中,导入一些数据到es时,会采取这种方式。就是使用系统中已有的数据的唯一标识,作为es中document的id.举个例子,比如说,开发一个电商网站,做搜索功能,或者OA系统,做员工检索功能。这个时候,数据首先会在网站系统或者IT系统内部的数据库中,会先有一...原创 2018-09-12 09:21:55 · 27026 阅读 · 0 评论 -
document的_source元数据以及定制返回结果解析
1. _source元数据PUT /test_index/type_test/2{ "name":"yagao", "age":23}GET /test_index/type_test/2{ "_index":"test_index", "_type":"type_test", "_id":&quo原创 2018-09-12 09:30:48 · 189 阅读 · 0 评论 -
ES document删除创建,替换
1. document的全量替换2. document的强制创建3. document的删除1. document的全量替换语法与创建文档是一样的,如果document id不存在,那么就创建,如果document id存在,那么就全量替换,替换document中的json串的内容2. document是不可变的,如果要修改documet的内容,第一种方式就是全量替换,直接对docu...原创 2018-09-12 10:58:10 · 813 阅读 · 0 评论 -
ES并发冲突的问题
当并发操作ES的线程越多,或者并发请求越多,或者是读取一份数据,供用户查询和操作的,时间越长,因为这段时间里很可能数据在ES已经被修改了,那么我们拿到的就是旧的数据,基于旧数据操作,那么后续肯定会出问题所以我们有悲观锁和乐观锁俩种并发控制方案悲观锁并发控制方案常见于关系型数据库中,比如mysql悲观锁并发控制方案,就是在各种情况下,都上锁,上锁之后,就只有一个线程可以操作这一条数据了,...原创 2018-09-12 11:15:37 · 3342 阅读 · 0 评论 -
ES partial update
PUT /index/type/id 创建文档&替换文档一般对应到应用程序中,每次的执行流程基本是这样的1. 应用程序先发起一个get请求,获取到document,展示到前台界面,供用户查看和修改2. 用户在前台界面修改数据,发送到后台3. 后台代码,会将用户修改的数据在内存中进行执行,然后封装好修改后的全量数据4. 然后发送PUT请求,到es中进行全量替换5. es将老的do...原创 2018-09-12 13:13:51 · 233 阅读 · 0 评论 -
es 基于groovy脚本进行操作document
es,其实是有个内置的脚本支持的,可以基于groovy脚本实现各种各样的复杂的操作基于groovy脚本,如何执行partial updatePUT /index/type/id{ "num":0, "tags":[]}1. 内置脚本POST /index/type/id/_update{ "script":"ctx._source.num+=1"}2....原创 2018-09-12 13:55:56 · 1239 阅读 · 0 评论 -
ES 写入原理
document写入原理1. 数据写入es中是首先写到内存buffer缓存中2. 每隔一段时间执行commit point3. 执行commit操作后,buffer中的数据写入新的index segment中4. 等待在os cache中的index segment被fync强制刷到磁盘上5. 新的index segement被打开,供search使用6. buffer被清空每次c...原创 2018-09-14 10:34:09 · 2342 阅读 · 0 评论