自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Smart_cxr的博客

博主很懒,什么都没留下。。。。

  • 博客(112)
  • 资源 (3)
  • 收藏
  • 关注

原创 Spark RDD及编程接口

1.介绍对于一个Spark程序而言,一般情况下RDD操作之间的关系图如下所示,经过输入(创建)操作,转换操作,输出操作(action操作)来完成一个作业。2.Spark RDDRDD是弹性分布式数据集,即一个RDD代表了一个被分区的只读数据集,RDD可以通过两种方式生成,一种是来自内部或者外部的存储系统,另一种是通过转换操作(transform)来自其他的RDD,比如Map、fil...

2019-03-19 22:11:27 686

原创 第9条:覆盖equals时总要覆盖hashCode

import java.util.HashMap;import java.util.Map;public final class PhoneNumber { private final short areaCode; private final short prefix; private final short lineNumber; public PhoneNumber(in...

2018-12-27 15:33:27 251

原创 Elasticsearch多shard场景下relevance score不准确问题

1、多shard场景下relevance score不准确问题大揭秘如果你的一个index有多个shard的话,可能搜索结果会不准确图解2、如何解决该问题?(1)生产环境下,数据量大,尽可能实现均匀分配数据量很大的话,其实一般情况下,在概率学的背景下,es都是在多个shard中均匀路由数据的,路由的时候根据_id,负载均衡比如说有10个document,title都包含j...

2018-12-02 17:48:59 441

原创 ElasticSearch的segment merge操作

每秒一个segment file,文件过多,而且每次search都要搜索所有的segment,很耗时默认会在后台执行segment merge操作,在merge的时候,被标记为deleted的document也会被彻底物理删除每次merge操作的执行流程(1)选择一些有相似大小的segment,merge成一个大的segment(2)将新的segment flush到磁盘上去(3)...

2018-12-01 09:42:51 1053

原创 Elasticsearch的写入优化

再次优化的写入流程(1)数据写入buffer缓冲和translog日志文件(2)每隔一秒钟,buffer中的数据被写入新的segment file,并进入os cache,此时segment被打开并供search使用(3)buffer被清空(4)重复1~3,新的segment不断添加,buffer不断被清空,而translog中的数据不断累加(5)当translog长度达到一定程度的时...

2018-11-29 22:30:18 454

转载 Elasticsearch的NRT优化,近实时查询

现有流程的问题,每次都必须等待fsync将segment刷入磁盘,才能将segment打开供search使用,这样的话,从一个document写入,到它可以被搜索,可能会超过1分钟!!!这就不是近实时的搜索了!!!主要瓶颈在于fsync实际发生磁盘IO写数据进磁盘,是很耗时的。写入流程别改进如下:(1)数据写入buffer(2)每隔一定时间,buffer中的数据被写入segment文件,...

2018-11-29 22:17:48 405

原创 Elasticsearch的document增删改原理

(1)数据写入buffer(2)commit point(3)buffer中的数据写入新的index segment(4)等待在os cache中的index segment被fsync强制刷到磁盘上(5)新的index sgement被打开,供search使用(6)buffer被清空每次commit point时,会有一个.del文件,标记了哪些segment中的哪些documen...

2018-11-29 22:11:01 159

原创 Elasticsearch的倒排索引结构

倒排索引,是适合用于进行搜索的倒排索引的结构(1)包含这个关键词的document list(2)包含这个关键词的所有document的数量:IDF(inverse document frequency)(3)这个关键词在每个document中出现的次数:TF(term frequency)(4)这个关键词在这个document中的次序(5)每个document的长度:length...

2018-11-29 21:39:24 222

原创 Elasticsearch的零停机重建索引

1、重建索引一个field的设置是不能被修改的,如果要修改一个Field,那么应该重新按照新的mapping,建立一个index,然后将数据批量查询出来,重新用bulk api写入index中批量查询的时候,建议采用scroll api,并且采用多线程并发的方式来reindex数据,每次scoll就查询指定日期的一段数据,交给一个线程即可(1)一开始,依靠dynamic mapping...

2018-11-29 21:37:08 589 1

原创 Elasticsearch的dynamic策略

1、定制dynamic策略true:遇到陌生字段,就进行dynamic mappingfalse:遇到陌生字段,就忽略strict:遇到陌生字段,就报错PUT /my_index{  "mappings": {    "my_type": {      "dynamic": "strict", //设置了strict,添加字段报错      "prop...

2018-11-29 21:19:16 1668

原创 Elasticsearch的索引管理

1、root object就是某个type对应的mapping json,包括了properties,metadata(_id,_source,_type),settings(analyzer),其他settings(比如include_in_all)PUT /my_index{  "mappings": {    "my_type": {      "properties": ...

2018-11-29 20:58:27 177

原创 Elasticsearch的type数据结构

type,是一个index中用来区分类似的数据的,类似的数据,但是可能有不同的fields,而且有不同的属性来控制索引建立、分词器field的value,在底层的lucene中建立索引的时候,全部是opaque bytes类型,不区分类型的lucene是没有type的概念的,在document中,实际上将type作为一个document的field来存储,即_type,es通过_type来进行...

2018-11-29 20:50:58 967

原创 Elasticsearch的query phase和fetch phase

1、query phase(1)搜索请求发送到某一个coordinate node,构构建一个priority queue,长度以paging操作from和size为准,默认为10(2)coordinate node将请求转发到所有shard,每个shard本地搜索,并构建一个本地的priority queue(3)各个shard将自己的priority queue返回给coordinat...

2018-11-28 21:22:11 698

原创 Elasticsearch的算法介绍

1、算法介绍relevance score算法,简单来说,就是计算出,一个索引中的文本,与搜索文本,他们之间的关联匹配程度Elasticsearch使用的是 term frequency/inverse document frequency算法,简称为TF/IDF算法Term frequency:搜索文本中的各个词条在field文本中出现了多少次,出现次数越多,就越相关搜索请求:h...

2018-11-28 21:09:16 2482

原创 Elasticsearch的filter与query性能

1、filter与query示例PUT /company/employee/2{  "address": {    "country": "china",    "province": "jiangsu",    "city": "nanjing"  },  "name": "tom",  "age

2018-11-27 22:29:04 331

原创 Elasticsearch什么是mapping、数据类型以及dynamic mapping

(1)往es里面直接插入数据,es会自动建立索引,同时建立type以及对应的mapping(2)mapping中就自动定义了每个field的数据类型(3)不同的数据类型(比如说text和date),可能有的是exact value,有的是full text(4)exact value,在建立倒排索引的时候,分词的时候,是将整个值一起作为一个关键词建立到倒排索引中的;full text,会经历...

2018-11-27 21:39:02 213

原创 Elasticsearch的分词器

1、什么是分词器切分词语,normalization(提升recall召回率)给你一段句子,然后将这段句子拆分成一个一个的单个的单词,同时对每个单词进行normalization(时态转换,单复数转换),分瓷器recall,召回率:搜索的时候,增加能够搜索到的结果的数量character filter:在一段文本进行分词之前,先进行预处理,比如说最常见的就是,过滤html标签(&lt...

2018-11-27 21:21:28 185

原创 Elasticsearch的倒排索引的核心原理

例如:doc1:I really liked my small dogs, and I think my mom also liked them.doc2:He never liked any dogs, so I hope that my mom will not expect me to liked him.分词,初步的倒排索引的建立word doc1 doc2I ...

2018-11-26 23:04:34 495

原创 Elasticsearch的全文检索

1、exact value2017-01-01,exact value,搜索的时候,必须输入2017-01-01,才能搜索出来如果你输入一个01,是搜索不出来的2、full text(1)缩写 vs. 全程:cn vs. china(2)格式转化:like liked likes(3)大小写:Tom vs tom(4)同义词:like vs love2017-01-01,2...

2018-11-26 22:48:13 223

原创 Elasticsearch的query string的基础语法和query string分词

1、query string基础语法GET /test_index/test_type/_search?q=test_field:testGET /test_index/test_type/_search?q=+test_field:testGET /test_index/test_type/_search?q=-test_field:test一个是掌握q=field:search ...

2018-11-26 22:33:52 2086

原创 Elasticsearch的分页搜索和deep paging

课程大纲1、讲解如何使用es进行分页搜索的语法size,fromGET /_search?size=10GET /_search?size=10&from=0GET /_search?size=10&from=202、什么是deep paging问题?为什么会产生这个问题,它的底层原理是什么?deep paging图解 ...

2018-11-26 22:25:08 219

原创 Elasticsearch的timeout机制

1、我们如果发出一个搜索请求的话,会拿到一堆搜索结果,这个搜索结果里的各种数据,都代表了什么含义2、搜索的timeout机制,底层的原理,画图讲解GET /_search{  "took": 6,  "timed_out": false,  "_shards": {    "total": 6,    "successful": 6,    "failed": 0

2018-11-26 21:36:33 3084

原创 Elasticsearch bulk api奇特的json格式

bulk api奇特的json格式{"action": {"meta"}}\n{"data"}\n{"action": {"meta"}}\n{"data"}\n[{  "action": {   },  "data": {  }}]1、bulk中的每个操作都可能要转发到不同的node的shard去执行2、如果采用

2018-11-26 21:24:17 208

原创 Elasticsearch的读请求内部原理

1、客户端发送请求到任意一个node,成为coordinate node2、coordinate node对document进行路由,将请求转发到对应的node,此时会使用round-robin随机轮询算法,在primary shard以及其所有replica中随机选择一个,让读请求负载均衡3、接收请求的node返回document给coordinate node4、coordinate n...

2018-11-26 21:04:21 255

原创 Elsticsearch的写一致性以及相关参数

(1)consistency,one(primary shard),all(all shard),quorum(default)我们在发送任何一个增删改操作的时候,比如说put /index/type/id,都可以带上一个consistency参数,指明我们想要的写一致性是什么?put /index/type/id?consistency=quorumone:要求我们这个写操作,只要有一...

2018-11-26 20:42:19 567

原创 Elasticsearch的路由算法

(1)document路由到shard上是什么意思?(2)路由算法:shard = hash(routing) % number_of_primary_shards举个例子,一个index有3个primary shard,P0,P1,P2每次增删改查一个document的时候,都会带过来一个routing number,默认就是这个document的_id(可能是手动指定,也可能是自动...

2018-11-24 21:41:27 513

原创 Elsticsearch的bluk语法

1、bulk语法POST /_bulk{ "delete": { "_index": "test_index", "_type": "test_type", "_id": "3" }} { "create": { "_index": "test_index", "_type": &

2018-11-24 21:27:13 315

原创 Elsticsearch的批量查询

1、批量查询的好处就是一条一条的查询,比如说要查询100条数据,那么就要发送100次网络请求,这个开销还是很大的如果进行批量查询的话,查询100条数据,就只要发送1次网络请求,网络请求的性能开销缩减100倍2、mget的语法(1)一条一条的查询GET /test_index/test_type/1GET /test_index/test_type/2(2)mget批量查询...

2018-11-24 21:12:55 456

原创 Elasticsearch的_document的全量替换、强制创建以及图解lazy delete机制

1、document的全量替换2、document的强制创建3、document的删除1、document的全量替换(1)语法与创建文档是一样的,如果document id不存在,那么就是创建;如果document id已经存在,那么就是全量替换操作,替换document的json串内容(2)document是不可变的,如果要修改document的内容,第一种方式就是全量替换,直接对...

2018-11-24 14:38:18 169

原创 Elasticsearch的_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",  "_type": "t

2018-11-24 14:30:28 393

原创 Elasticsearch的id生成机制

1、手动指定document id2、自动生成document id1、手动指定document id(1)根据应用情况来说,是否满足手动指定document id的前提:一般来说,是从某些其他的系统中,导入一些数据到es时,会采取这种方式,就是使用系统中已有数据的唯一标识,作为es中document的id。举个例子,比如说,我们现在在开发一个电商网站,做搜索功能,或者是OA系统,做...

2018-11-24 14:24:33 5432

原创 Elasticsearch的元数据

1、_index元数据2、_type元数据3、_id元数据{  "_index": "test_index",  "_type": "test_type",  "_id": "1",  "_version": 1,  "found": true,  "_source": {    "test_co

2018-11-24 14:08:01 515

原创 Elasticsearchshard&replica机制梳理

1、shard&replica机制再次梳理2、图解单node环境下创建index是什么样子的1、shard&replica机制再次梳理(1)index包含多个shard(2)每个shard都是一个最小工作单元,承载部分数据,lucene实例,完整的建立索引和处理请求的能力(3)增减节点时,shard会自动在nodes中负载均衡(4)primary shard和rep...

2018-11-24 12:17:31 139

原创 Elasticsearch的特性

1、Elasticsearch对复杂分布式机制的透明隐藏特性2、Elasticsearch的垂直扩容与水平扩容3、增减或减少节点时的数据rebalance4、master节点5、节点对等的分布式架构 1、Elasticsearch对复杂分布式机制的透明隐藏特性Elasticsearch是一套分布式的系统,分布式是为了应对大数据量隐藏了复杂的分布式机制分片机制(我们之前随随...

2018-11-24 10:45:07 813

原创 Elsticsearch的基本查询操作

1、query string search2、query DSL3、query filter4、full-text search5、phrase search6、highlight search1、query string search搜索全部商品:GET /ecommerce/product/_searchtook:耗费了几毫秒timed_out:是否超时,这里是没有_...

2018-11-24 10:07:19 1760

原创 Elsticsearch的基本操作

1、document数据格式2、电商网站商品管理案例:背景介绍3、简单的集群管理4、商品的CRUD操作(document CRUD操作)1、document数据格式面向文档的搜索分析引擎(1)应用系统的数据结构都是面向对象的,复杂的(2)对象数据存储到数据库中,只能拆解开来,变为扁平的多张表,每次查询的时候还得还原回对象格式,相当麻烦(3)ES是面向文档的,文档中存储的数据结...

2018-11-23 22:54:48 1104

原创 在windows上安装和启动Elasticseach

1、安装JDK,至少1.8.0_73以上版本,java -version2、下载和解压缩Elasticsearch安装包,目录结构3、启动Elasticsearch:bin\elasticsearch.bat,es本身特点之一就是开箱即用,如果是中小型应用,数据量少,操作不是很复杂,直接启动就可以用了4、检查ES是否启动成功:http://localhost:9200/?prettyn...

2018-11-23 22:13:37 152

原创 Elasticsearch的核心概念

1、lucene和elasticsearch的前世今生2、elasticsearch的核心概念3、elasticsearch核心概念 vs. 数据库核心概念1、lucene和elasticsearch的前世今生lucene,最先进、功能最强大的搜索库,直接基于lucene开发,非常复杂,api复杂(实现一些简单的功能,写大量的java代码),需要深入理解原理(各种索引结构)ela...

2018-11-23 21:57:34 238

原创 Elasticsearch的功能、适用场景、特点

1、Elasticsearch的功能,干什么的2、Elasticsearch的适用场景,能在什么地方发挥作用3、Elasticsearch的特点,跟其他类似的东西不同的地方在哪里1、Elasticsearch的功能(1)分布式的搜索引擎和数据分析引擎搜索:百度,网站的站内搜索,IT系统的检索数据分析:电商网站,最近7天牙膏这种商品销量排名前10的商家有哪些;新闻网站,最近1个月访...

2018-11-23 21:26:06 515

原创 Spark二次排序

  package cn.spark.study.core.upgrade.applog;import java.util.List;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spark.api.java.JavaRDD;i...

2018-08-06 13:13:16 242

Java23中设计模式视频教程

Java编程中23种设计模式,详细视频教程介绍!编程更加高效的Java代码。

2018-12-27

大数据技术

大数据技术,包括了大数据生态圈和数据挖掘相关技术。

2018-12-26

大数据实战项目

企业级大数据实战项目,包含用到的软件、源代码、以及安装包。

2018-12-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除