SummerPunch

相信日积月累的力量

ElasticSearch进阶(四)结构化搜索_在案例中使用terms搜索多个值以及多值搜索结果优化

term: {"field": "value"} terms: {"field": ["value1", "value2&quo...

2018-12-01 20:51:08

阅读数 130

评论数 0

ElasticSearch进阶(三)结构化搜索_实战基于bool组合多个filter条件来搜索数据

1、搜索发帖日期为2017-01-01,或者帖子ID为XHDK-A-1293-#fJ3的帖子,同时要求帖子的发帖日期绝对不为2017-01-02 sql 的写法 select * from forum.article where (post_date='2017-01-01' or...

2018-12-01 20:40:30

阅读数 393

评论数 0

NIO

介绍 Java NIO(New IO)是从Java 1.4版本开始引入的 一个新的IO API,可以替代标准的Java IO API。 NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文 件的读写操作。 ...

2018-12-01 17:22:00

阅读数 74

评论数 0

ElasticSearch进阶(二)结构化搜索_filter执行原理深度剖析(bitset机制与caching机制)

(1)在倒排索引中查找搜索串,获取 word doc1 doc2 doc3 2017-01-01 * 2017-01-02 * * 2017-01-03 * * * filter:2017-02-02 到倒排索引中一找,发现2017-02-02对应的docume...

2018-11-25 16:31:13

阅读数 70

评论数 0

ElasticSearch进阶(一)结构化搜索_在案例中使用term filter来搜索数据

1、根据用户ID、是否隐藏、帖子ID、发帖日期来搜索帖子 (1)插入一些测试帖子数据 初步来说,就先搞4个字段,因为整个es是支持json document格式的,所以说扩展性和灵活性非常之好。如果后续随着业务需求的增加,要在document中增加更多的field,那么我们可以很方便的随时...

2018-11-21 20:01:37

阅读数 120

评论数 0

ElasticSearch最佳入门实践(七十三)Java 实战 - 对员工信息进行聚合分析

构建数据 client.prepareIndex("company", "employee", "1") .setSource(XContentFactory...

2018-11-18 14:18:28

阅读数 166

评论数 0

ElasticSearch最佳入门实践(七十二)Java 实战 - 对员工信息进行复杂的搜索操作

需求: (1)搜索职位中包含technique的员工 (2)同时要求age在30到40岁之间 (3)分页查询,查找第一页 1、构建员工信息 public class EmployeeSearchApp { public static void main(String[] args) ...

2018-11-18 13:23:00

阅读数 88

评论数 0

ElasticSearch最佳入门实践(七十一)Java 实战 - 员工增删改查

1、新建一个maven项目 2、创建员工信息 3、获取员工信息 4、更新员工信息 4、删除员工信息

2018-11-17 22:48:06

阅读数 213

评论数 0

ElasticSearch最佳入门实践(七十)优化写入流程实现海量磁盘文件合并(segment merge,optimize)

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

2018-11-17 15:00:37

阅读数 118

评论数 0

ElasticSearch最佳入门实践(六十九)优化写入流程实现durability可靠存储(translog,flush)

(1)数据写入buffer缓冲和translog日志文件 (2)每隔一秒钟,buffer中的数据被写入新的segment file,并进入os cache,此时segment被打开并供search使用 (3)buffer被清空 (4)重复1~3,新的segment不断添加,buffer不断被清空...

2018-11-17 14:58:12

阅读数 284

评论数 0

ElasticSearch最佳入门实践(六十八)优化写入流程实现NRT近实时(filesystem cache,refresh)

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

2018-11-17 14:52:42

阅读数 326

评论数 0

ElasticSearch最佳入门实践(六十七)document写入原理(buffer,segment,commit)

(1)数据写入buffer (2)commit point (3)buffer中的数据写入新的index segment (4)等待在os cache中的index segment被fsync强制刷到磁盘上 (5)新的index sgement被打开,供search使用 (6)buffer被清空...

2018-11-17 14:49:12

阅读数 82

评论数 0

ElasticSearch最佳入门实践(六十六)倒排索引组成结构以及其索引可变原因

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

2018-11-17 14:45:13

阅读数 56

评论数 0

ElasticSearch最佳入门实践(六十五)基于scoll+bulk+索引别名实现零停机重建索引

1、重建索引 一个field的设置是不能被修改的,如果要修改一个Field,那么应该重新按照新的mapping,建立一个index,然后将数据批量查询出来,重新用bulk api写入index中 批量查询的时候,建议采用scroll api,并且采用多线程并发的方式来reindex数据,每次...

2018-11-17 13:48:13

阅读数 64

评论数 0

ElasticSearch最佳入门实践(六十四)索引管理_定制化自己的dynamic mapping

1、定制dynamic策略 true:遇到陌生字段,就进行dynamic mapping false:遇到陌生字段,就忽略 strict:遇到陌生字段,就报错 定制 PUT /my_index { "mappings": { &quo...

2018-11-17 13:36:00

阅读数 78

评论数 0

ElasticSearch最佳入门实践(六十三)索引管理_mapping root object

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

2018-11-17 13:24:00

阅读数 47

评论数 0

ElasticSearch最佳入门实践(六十二)type底层数据结构

type,是一个index中用来区分类似的数据的,类似的数据,但是可能有不同的fields,而且有不同的属性来控制索引建立、分词器 field的value,在底层的lucene中建立索引的时候,全部是opaque bytes类型,不区分类型的 lucene是没有type的概念的,在docum...

2018-11-15 23:18:32

阅读数 77

评论数 0

ElasticSearch最佳入门实践(六十一)修改分词器以及定制自己的分词器

1、默认的分词器 standard 其余: standard tokenizer:以单词边界进行切分 standard token filter:什么都不做 lowercase token filter:将所有字母转换为小写 stop token filer(默认被禁用):移除停用词,比如a...

2018-11-15 22:57:01

阅读数 555

评论数 0

ElasticSearch最佳入门实践(六十)创建、修改以及删除索引

1、创建索引 创建索引的语法 PUT /my_index { "settings": { ... any settings ... }, "mappings": { "ty...

2018-11-15 22:47:27

阅读数 70

评论数 0

ElasticSearch最佳入门实践(五十九)基于scoll技术滚动搜索大量数据

如果一次性要查出来比如10万条数据,那么性能会很差,此时一般会采取用scoll滚动查询,一批一批的查,直到所有数据都查询完处理完 使用scoll滚动搜索,可以先搜索一批数据,然后下次再搜索一批数据,以此类推,直到搜索出全部的数据来 scoll搜索会在第一次搜索的时候,保存一个当时的视图快照,...

2018-11-15 22:01:32

阅读数 39

评论数 0

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