elasticsearch
两点一刻
如有疑问,请发邮件:[email protected]
请关注:github:https://github.com/wangrui0/
我是一个java和大数据工程师!
展开
-
原 Elasticsearch 第04节 window 上启动elasticsearch
1、安装JDK,至少1.8.0_73以上版本,java -version2、下载和解压缩Elasticsearch安装包,目录结构 3、启动Elasticsearch:bin\elasticsearch.bat,es本身特点之一就是开箱即用,如果是中小型应用,数据量少,操作不是很复杂,直接启动就可以用了 4、检查ES是否启动成功:http://localhost:9...原创 2019-01-18 22:49:10 · 424 阅读 · 0 评论 -
第05节 商品管理:文档操作
课程大纲 1、document数据格式2、电商网站商品管理案例:背景介绍3、简单的集群管理4、商品的CRUD操作(document CRUD操作) ----------------------------------------------------------------------------------------------------------------...原创 2019-01-18 22:53:26 · 240 阅读 · 0 评论 -
第06节:网站商品管理:多种搜索方式
课程大纲 1、query string search2、query DSL3、query filter4、full-text search5、phrase search6、highlight search -------------------------------------------------------------------------------...原创 2019-01-19 10:28:17 · 282 阅读 · 0 评论 -
第07节 电商网站商品管理:嵌套聚合,下钻分析,聚合分析
第一个分析需求:计算每个tag下的商品数量 GET /ecommerce/product/_search{ "aggs": { "group_by_tags": { "terms": { "field": "tags" } } }} 将文本field的fielddata属性设置为true PUT /ecommerce/_...原创 2019-01-19 10:30:52 · 122 阅读 · 0 评论 -
第08 Elasticsearch的基础分布式架构
课程大纲 1、Elasticsearch对复杂分布式机制的透明隐藏特性2、Elasticsearch的垂直扩容与水平扩容3、增减或减少节点时的数据rebalance4、master节点5、节点对等的分布式架构 -------------------------------------------------------------------------------...原创 2019-01-19 10:33:09 · 103 阅读 · 0 评论 -
第09 Elasticsearch shard&replica机制 单node环境中创建index图解
课程大纲 1、shard&replica机制再次梳理2、图解单node环境下创建index是什么样子的 ------------------------------------------------------------------------------------------------ shard&replica机制再次梳理 (1)i...原创 2019-01-19 10:36:02 · 142 阅读 · 0 评论 -
第10 el node环境下replica shard 的 分配
课程大纲 图解2个node环境下replica shard是如何分配的 (1)replica shard分配:3个primary shard,3个replica shard,1 node(2)primary ---> replica同步(3)读请求:primary/replica...原创 2019-01-19 10:44:15 · 107 阅读 · 0 评论 -
第11节 elasticsearch 横向扩容过程,超出扩容极限?提升容错性?
课程大纲 图解横向扩容过程,如何超出扩容极限,以及如何提升容错性 (1)primary&replica自动负载均衡,6个shard,3 primary,3 replica(2)每个node有更少的shard,IO/CPU/Memory资源给每个shard分配更多,每个shard性能更好(3)扩容的极限,6个shard(3 primary,3 replica),最多扩...原创 2019-01-19 10:47:46 · 168 阅读 · 0 评论 -
第12节 elasticsearch 横向扩容过程,超出扩容极限?提升容错性?
课程大纲 1、图解Elasticsearch容错机制:master选举,replica容错,数据恢复 (1)9 shard,3 node(2)master node宕机,自动master选举,red(3)replica容错:新master将replica提升为primary shard,yellow(4)重启宕机node,master copy replica到该nod...原创 2019-01-19 10:49:29 · 196 阅读 · 0 评论 -
第13 节 document的核心元数据 图解剖析index创建反例
课程大纲 1、_index元数据2、_type元数据3、_id元数据 { "_index": "test_index", "_type": "test_type", "_id": "1", "_version": 1, "found": true, "_source":原创 2019-01-19 10:53:12 · 97 阅读 · 0 评论 -
第14 节 document id的手动与自动方式
课程大纲 1、手动指定document id2、自动生成document id ------------------------------------------------------------------------------------------------------------ 1、手动指定document id (1)根据应用情况来说,是否满...原创 2019-01-21 10:00:35 · 117 阅读 · 0 评论 -
第15 节 document的 source元数据 和 定制返回结果
课程大纲 1、_source元数据 put /test_index/test_type/1{ "test_field1": "test field1", "test_field2": "test field2"} get /test_index/test_type/1 { "_index": "test_index", &qu原创 2019-01-21 10:34:37 · 115 阅读 · 0 评论 -
第16 节 es document的全量替换、强制创建 和 图解lazy delete
课程大纲 1、document的全量替换2、document的强制创建3、document的删除 ------------------------------------------------------------------------------------------------------------------------ 1、document的全量替...原创 2019-01-21 10:37:40 · 118 阅读 · 0 评论 -
第17 节 剖析Elasticsearch并发冲突问题
深度图解剖析Elasticsearch并发冲突问题原创 2019-01-21 10:39:35 · 198 阅读 · 0 评论 -
第18 节 剖析悲观锁与乐观锁两种并发控制
深度图解剖析悲观锁与乐观锁两种并发控制方案原创 2019-01-21 10:41:21 · 112 阅读 · 0 评论 -
第19节 Elasticsearch内部如何基于_version进行乐观锁并发控制
1、图解Elasticsearch内部如何基于_version进行乐观锁并发控制 (1)_version元数据 PUT /test_index/test_type/6{ "test_field": "test test"} { "_index": "test_index", "_type": "test_type", "原创 2019-01-21 10:43:22 · 181 阅读 · 0 评论 -
第20节:基于_version进行乐观锁并发控制
(1)先构造一条数据出来 PUT /test_index/test_type/7{ "test_field": "test test"} (2)模拟两个客户端,都获取到了同一条数据 GET test_index/test_type/7 { "_index": "test_index", "_type": "test_type"原创 2019-01-21 15:29:59 · 117 阅读 · 0 评论 -
第21节:elasticsearch 基于external version进行乐观锁并发控制
课程大纲 1、上机动手实战演练基于external version进行乐观锁并发控制 external version es提供了一个feature,就是说,你可以不用它提供的内部_version版本号来进行并发控制,可以基于你自己维护的一个版本号来进行并发控制。举个列子,加入你的数据在mysql里也有一份,然后你的应用系统本身就维护了一个版本号,无论是什么自己生成的,程序...原创 2019-01-21 15:32:16 · 155 阅读 · 0 评论 -
Elasticsearch 第1篇 入门
课程大纲 大白话、什么是Elasticsearch Elasticsearch,分布式,高性能,高可用,可伸缩的搜索和分析系统 1、什么是搜索?2、如果用数据库做搜索会怎么样?3、什么是全文检索、倒排索引和Lucene?4、什么是Elasticsearch?1、什么是搜索? 百度:我们比如说想找寻任何的信息的时候,就会上百度去搜索一下,比如说找一部自...原创 2019-01-16 07:35:52 · 110 阅读 · 0 评论 -
Elasticsearch 第02节:Elasticsearch 介绍
课程大纲 1、Elasticsearch的功能,干什么的2、Elasticsearch的适用场景,能在什么地方发挥作用3、Elasticsearch的特点,跟其他类似的东西不同的地方在哪里 ---------------------------------------------------------------------------------------------...原创 2019-01-16 07:51:25 · 81 阅读 · 0 评论 -
第22节:partial update实现原理和动手实战演练
1、什么是partial update? PUT /index/type/id,创建文档&替换文档,就是一样的语法 一般对应到应用程序中,每次的执行流程基本是这样的: (1)应用程序先发起一个get请求,获取到document,展示到前台界面,供用户查看和修改(2)用户在前台界面修改数据,发送到后台(3)后台代码,会将用户修改的数据在内存中进行执行,然...原创 2019-01-22 10:59:13 · 133 阅读 · 0 评论 -
第23节 实战演练基于groovy脚本进行partial update
es,其实是有个内置的脚本支持的,可以基于groovy脚本实现各种各样的复杂操作基于groovy脚本,如何执行partial updatees scripting module,我们会在高手进阶篇去讲解,这里就只是初步讲解一下 PUT /test_index/test_type/11{ "num": 0, "tags": []} (1)内置脚本...原创 2019-01-22 11:01:47 · 144 阅读 · 0 评论 -
第24节:图解partial update乐观锁并发控制原理以及相关操作讲解
(1)partial update内置乐观锁并发控制(2)retry_on_conflict(3)_version post /index/type/id/_update?retry_on_conflict=5&version=6原创 2019-01-22 11:06:18 · 160 阅读 · 0 评论 -
第25节:演练mget批量查询api
课程大纲 1、批量查询的好处 就是一条一条的查询,比如说要查询100条数据,那么就要发送100次网络请求,这个开销还是很大的如果进行批量查询的话,查询100条数据,就只要发送1次网络请求,网络请求的性能开销缩减100倍 2、mget的语法 (1)一条一条的查询 GET /test_index/test_type/1GET /test_index/te...原创 2019-01-22 13:52:45 · 99 阅读 · 0 评论 -
第26节:bulk批量增删改
课程大纲 1、bulk语法 POST /_bulk{ "delete": { "_index": "test_index", "_type": "test_type", "_id": "3" }}{ "create": { "_index": "test_index", "_t原创 2019-01-22 13:55:45 · 152 阅读 · 0 评论 -
第27节:document数据路由原理
课程大纲 (1)document路由到shard上是什么意思? (2)路由算法:shard = hash(routing) % number_of_primary_shards 举个例子,一个index有3个primary shard,P0,P1,P2 每次增删改查一个document的时候,都会带过来一个routing number,默认就是这个document的...原创 2019-01-22 13:58:21 · 114 阅读 · 0 评论 -
第28节 分布式文档系统_document增删改内部原理图解揭秘
课程大纲 (1)客户端选择一个node发送请求过去,这个node就是coordinating node(协调节点)(2)coordinating node,对document进行路由,将请求转发给对应的node(有primary shard)(3)实际的node上的primary shard处理请求,然后将数据同步到replica node(4)coordinating nod...原创 2019-01-22 14:00:07 · 96 阅读 · 0 评论 -
第29节 :分布式文档系统_图解写一致性原理以及quorum机制深入剖析
课程大纲 (1)consistency,one(primary shard),all(all shard),quorum(default) 我们在发送任何一个增删改操作的时候,比如说put /index/type/id,都可以带上一个consistency参数,指明我们想要的写一致性是什么?put /index/type/id?consistency=quorum on...原创 2019-01-22 14:02:45 · 107 阅读 · 0 评论 -
Elasticsearch 第03节:Elasticsearch 核心概念
课程大纲 1、lucene和elasticsearch的前世今生2、elasticsearch的核心概念3、elasticsearch核心概念 vs. 数据库核心概念 --------------------------------------------------------------------------------------------------------...原创 2019-01-17 07:40:35 · 105 阅读 · 0 评论 -
第52节:初识搜素引擎_上机动手实战如何定制搜索结果的排序规则
课程大纲1、默认排序规则默认情况下,是按照_score降序排序的然而,某些情况下,可能没有有用的_score,比如说filterGET /_search{ "query" : { "bool" : { "filter" : { "term" : {...原创 2019-03-05 10:02:29 · 99 阅读 · 0 评论 -
第53节:初识搜索引擎_解密如何将一个field索引两次来解决字符串排序问题
课程大纲如果对一个string field进行排序,结果往往不准确,因为分词后是多个单词,再排序就不是我们想要的结果了通常解决方案是,将一个string field建立两次索引,一个分词,用来进行搜索;一个不分词,用来进行排序PUT /website{ "mappings": { "article": { "properties": ...原创 2019-03-05 10:03:11 · 81 阅读 · 0 评论 -
第54节:初识搜索引擎_相关度评分TF&IDF算法独家解密
课程大纲1、算法介绍relevance score算法,简单来说,就是计算出,一个索引中的文本,与搜索文本,他们之间的关联匹配程度Elasticsearch使用的是 term frequency/inverse document frequency算法,简称为TF/IDF算法Term frequency:搜索文本中的各个词条在field文本中出现了多少次,出...原创 2019-03-05 10:07:05 · 135 阅读 · 0 评论 -
第55节:初识搜索引擎_内核级知识点之doc value初步探秘
课程大纲搜索的时候,要依靠倒排索引;排序的时候,需要依靠正排索引,看到每个document的每个field,然后进行排序,所谓的正排索引,其实就是doc values在建立索引的时候,一方面会建立倒排索引,以供搜索用;一方面会建立正排索引,也就是doc values,以供排序,聚合,过滤等操作使用doc values是被保存在磁盘上的,此时如果内存足够,os会自动将其...原创 2019-03-05 10:08:14 · 87 阅读 · 0 评论 -
第56节:初识搜索引擎_分布式搜索引擎内核解密之query phase
课程大纲1、query phase(1)搜索请求发送到某一个coordinate node,构构建一个priority queue,长度以paging操作from和size为准,默认为10(2)coordinate node将请求转发到所有shard,每个shard本地搜索,并构建一个本地的priority queue(3)各个shard将自己的priority que...原创 2019-03-05 10:09:55 · 89 阅读 · 0 评论 -
第57节:初识搜索引擎_分布式搜索引擎内核解密之fetch phase
课程大纲1、fetch phbase工作流程(1)coordinate node构建完priority queue之后,就发送mget请求去所有shard上获取对应的document(2)各个shard将document返回给coordinate node(3)coordinate node将合并后的document结果返回给client客户端2、一般搜索,如...原创 2019-03-05 10:10:50 · 88 阅读 · 0 评论 -
第58节:初识搜索引擎_搜索相关参数梳理以及bouncing results问题解决方案
课程大纲1、preference决定了哪些shard会被用来执行搜索操作_primary, _primary_first, _local, _only_node:xyz, _prefer_node:xyz, _shards:2,3bouncing results问题,两个document排序,field值相同;不同的shard上,可能排序不同;每次请求轮询打...转载 2019-03-05 10:12:41 · 137 阅读 · 0 评论 -
第59节:初识搜索引擎_上机动手实战基于scoll技术滚动搜索大量数据
课程大纲如果一次性要查出来比如10万条数据,那么性能会很差,此时一般会采取用scoll滚动查询,一批一批的查,直到所有数据都查询完处理完使用scoll滚动搜索,可以先搜索一批数据,然后下次再搜索一批数据,以此类推,直到搜索出全部的数据来scoll搜索会在第一次搜索的时候,保存一个当时的视图快照,之后只会基于该旧的视图快照提供数据搜索,如果这个期间数据变更,是不会让用户看到的...转载 2019-03-05 10:13:52 · 101 阅读 · 0 评论 -
第60节:索引管理_快速上机动手实战创建、修改以及删除索引
课程大纲1、为什么我们要手动创建索引?2、创建索引创建索引的语法PUT /my_index{ "settings": { ... any settings ... }, "mappings": { "type_one": { ... any mappings ... }, "type_two": {...原创 2019-03-05 10:15:01 · 132 阅读 · 0 评论 -
第61节:索引管理_快速上机动手实战修改分词器以及定制自己的分词器
课程大纲1、默认的分词器standardstandard tokenizer:以单词边界进行切分standard token filter:什么都不做lowercase token filter:将所有字母转换为小写stop token filer(默认被禁用):移除停用词,比如a the it等等2、修改分词器的设置启用english...原创 2019-03-05 10:16:20 · 169 阅读 · 0 评论 -
第30节 :_document查询内部原理
1、客户端发送请求到任意一个node,成为coordinate node2、coordinate node对document进行路由,将请求转发到对应的node,此时会使用round-robin随机轮询算法,在primary shard以及其所有replica中随机选择一个,让读请求负载均衡3、接收请求的node返回document给coordinate node4、coordin...原创 2019-03-02 12:00:28 · 99 阅读 · 0 评论