自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 Scala:函数式编程

将函数赋值给变量Scala中的函数是一等公民,可以独立定义,独立存在,而且可以直接将函数作为值赋值给变量def sayHello(name:String){println("Hello," + name)}def sayHelloFunc = sayHello _ sayHelloFunc("LO")Scala的语法规定,将函数赋值给变量时,必须

2018-11-30 15:24:05 145

原创 Scala:Trait

将trait作为接口使用类可以使用extends关键字继承trait,注意,这里不是implement,而是extends,在scala中没有implement的概念,无论继承类还是trait,统一都是extends。类继承trait后,必须实现其中的抽象方法,实现时不需要使用override关键字trait SayHello { def sayHello(name:String)}...

2018-11-23 18:12:45 230

原创 Scala:面向对象

类类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。class Point(xc: Int, yc: Int) { var x: Int = xc var y: Int = yc def move(dx: Int, dy: Int) { x...

2018-11-22 18:07:55 143

原创 Scala:基础语法

声明变量1. 声明val变量:可以声明val变量来存放表达式的计算结果val result = 1 + 1但是常量声明后,是无法改变它的值的,例如,result = 1,会返回error: reassignment to val的错误信息2. 声明var变量:如果要声明值可以改变的引用,可以使用var变量。var myresult = 1,myresult = 2在scala程序...

2018-11-21 14:17:06 228

原创 ES:写入原理详解

(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中的哪些document...

2018-11-05 17:27:53 16841 11

原创 ES:倒排索引、分词详解

一,倒排索引(Inverted Index)ElasticSearch引擎把文档数据写入到倒排索引(Inverted Index)的数据结构中,倒排索引建立的是分词(Term)和文档(Document)之间的映射关系,在倒排索引中,数据是面向词(Term)而不是面向文档的。一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表示例:对以下三个文档去除停用词后构造...

2018-11-05 17:09:28 23776 2

原创 ES:基于scoll+bulk+索引别名实现零停机重建索引

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

2018-11-05 11:41:25 639

原创 ES:定制化自己的dynamic mapping策略

1、定制dynamic策略true:遇到陌生字段,就进行dynamic mappingfalse:遇到陌生字段,就忽略strict:遇到陌生字段,就报错PUT /my_index{ "mappings": { "my_type": { "dynamic": "strict", "properties": { "title": {

2018-11-05 11:17:58 1324

原创 ES:修改分词器以及定制自己的分词器

1、默认的分词器standardstandard tokenizer:以单词边界进行切分standard token filter:什么都不做lowercase token filter:将所有字母转换为小写stop token filer(默认被禁用):移除停用词,比如a the it等等2、修改分词器的设置PUT /my_index{ "settings": { "...

2018-11-02 16:04:35 9232

原创 ES:scoll技术滚动搜索大量数据

如果一次性要查出来比如10万条数据,那么性能会很差,此时一般会采取用scoll滚动查询,一批一批的查,直到所有数据都查询完处理完使用scoll滚动搜索,可以先搜索一批数据,然后下次再搜索一批数据,以此类推,直到搜索出全部的数据来scoll搜索会在第一次搜索的时候,保存一个当时的视图快照,之后只会基于该旧的视图快照提供数据搜索,如果这个期间数据变更,是不会让用户看到的采用基于_doc进行排序的...

2018-11-02 15:29:36 1194

原创 ES:搜索引擎内核解密

1、doc values搜索的时候,要依靠倒排索引;排序的时候,需要依靠正排索引,看到每个document的每个field,然后进行排序,所谓的正排索引,其实就是doc values在建立索引的时候,一方面会建立倒排索引,以供搜索用;一方面会建立正排索引,也就是doc values,以供排序,聚合,过滤等操作使用doc values是被保存在磁盘上的,此时如果内存足够,os会自动将其缓存在内...

2018-11-02 15:16:45 809

原创 ES:定制搜索结果的排序规则

1、默认排序规则默认情况下,是按照_score降序排序的GET /_search{ "query": { "bool": { "filter": { "term": { "author_id": 110 } } } }}GET /_search{ "query": {

2018-11-02 14:19:06 8572

原创 ES:Query DSL搜索语法

1、Query DSL的基本语法{ QUERY_NAME: { ARGUMENT: VALUE, ARGUMENT: VALUE,... }}{ QUERY_NAME: { FIELD_NAME: { ARGUMENT: VALUE, ARGUMENT: VALUE,.....

2018-11-01 15:00:09 5322 1

空空如也

空空如也

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

TA关注的人

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