自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Fireworks

相信日积月累的力量

  • 博客(68)
  • 资源 (8)
  • 收藏
  • 关注

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

(1)在倒排索引中查找搜索串,获取worddoc1doc2doc32017-01-01*2017-01-02**2017-01-03***filter:2017-02-02到倒排索引中一找,发现2017-02-02对应的document list是doc2,doc3(2)为每个在倒排索引中搜索到的结果,构建一个bitset,[0...

2018-11-25 16:31:13 196

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

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

2018-11-21 20:01:37 500

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

构建数据client.prepareIndex("company", "employee", "1") .setSource(XContentFactory.jsonBuilder() .startObject() .field("name", "jack") ...

2018-11-18 14:18:28 369

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

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

2018-11-18 13:23:00 236

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

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

2018-11-17 22:48:06 1007

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

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

2018-11-17 15:00:37 1014

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

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

2018-11-17 14:58:12 2278

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

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

2018-11-17 14:52:42 3202

原创 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被清空每次commit point时,会有一个.del文件,标记了哪些segment中的哪些docu...

2018-11-17 14:49:12 403

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

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

2018-11-17 14:45:13 206

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

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

2018-11-17 13:48:13 285

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

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

2018-11-17 13:36:00 280

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

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-17 13:24:00 209

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

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

2018-11-15 23:18:32 458

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

1、默认的分词器standard其余:standard tokenizer:以单词边界进行切分standard token filter:什么都不做lowercase token filter:将所有字母转换为小写stop token filer(默认被禁用):移除停用词,比如a the it等等2、基于英语的过滤器修改分词器的设置启用english停用词token f...

2018-11-15 22:57:01 2441 1

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

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

2018-11-15 22:47:27 429

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

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

2018-11-15 22:01:32 172

原创 ElasticSearch最佳入门实践(五十八)搜索相关参数梳理以及bouncing results问题解决方案

1、preference决定了哪些shard会被用来执行搜索操作_primary, _primary_first, _local, _only_node:xyz, _prefer_node:xyz, _shards:2,3bouncing results问题,两个document排序,field值相同;不同的shard上,可能排序不同;每次请求轮询打到不同的replica shar...

2018-11-15 21:41:12 671

原创 ElasticSearch最佳入门实践(五十七)分布式搜索引擎内核解密之fetch phase

1、fetch phbase工作流程(1)coordinate node构建完priority queue之后,就发送mget请求去所有shard上获取对应的document(2)各个shard将document返回给coordinate node(3)coordinate node将合并后的document结果返回给client客户端2、一般搜索,如果不加from和size...

2018-11-15 21:21:04 416

原创 ElasticSearch最佳入门实践(五十六)分布式搜索引擎内核解密之query phase

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

2018-11-15 21:12:31 210

原创 ElasticSearch最佳入门实践(五十五)内核级知识点之 doc value 初步探秘

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

2018-11-15 15:35:44 253

原创 ElasticSearch最佳入门实践(五十四)相关度评分 TF & IDF 算法解密

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

2018-11-15 15:20:07 791

原创 ElasticSearch最佳入门实践(五十三)如何将一个field索引两次来解决字符串排序问题

如果对一个string field进行排序,结果往往不准确,因为分词后是多个单词,再排序就不是我们想要的结果了通常解决方案是,将一个string field建立两次索引,一个分词,用来进行搜索;一个不分词,用来进行排序新增数据并查询...

2018-11-15 14:52:04 272

原创 ElasticSearch最佳入门实践(五十二)定制搜索结果的排序规则

1、默认排序规则默认情况下,是按照_score降序排序的然而,某些情况下,可能没有有用的_score,比如说filterGET /_search{ "query" : { "bool" : { "filter" : { "term" : { "author_id" ...

2018-11-14 16:48:28 390

原创 ElasticSearch最佳入门实践(五十一)定位不合法的搜索以及其原因

1、故意把 match 写成 math也可以一般用在那种特别复杂庞大的搜索下,比如你一下子写了上百行的搜索,这个时候可以先用validate api去验证一下,搜索是否合法...

2018-11-14 16:39:29 136

原创 ElasticSearch最佳入门实践(五十)组合查询

1、例子GET /website/article/_search{ "query": { "bool": { "must": [ { "match": { "title": "elasticsearch" } } ], "should

2018-11-14 16:26:06 188

原创 ElasticSearch最佳入门实践(四十九)各种query搜索语法

1、match all查询所有GET /_search{ "query": { "match_all": {} }}2、match匹配某一个filed是否包含文本GET /_search{ "query": { "match": { "title": "my elasticsearch article" }}}3、mu

2018-11-13 15:26:33 1727

原创 ElasticSearch最佳入门实践(四十八)_filter与query深入对比解密:相关度,性能

1、filter 与 query 示例先构建两条数据搜索请求:年龄必须大于等于30,同时join_date必须是2018-01-012、filter与query对比大解密filter,仅仅只是按照搜索条件过滤出需要的数据而已,不计算任何相关度分数,对相关度没有任何影响query,会去计算每个document相对于搜索条件的相关度,并按照相关度进行排序一般来说,如果你是...

2018-11-13 15:14:11 349

原创 ElasticSearch最佳入门实践(四十七)query DSL搜索语法

1、一个例子让你明白什么是Query DSLGET /_search{ "query": { "match_all": {} }}2、Query DSL的基本语法{ QUERY_NAME: { ARGUMENT: VALUE, ARGUMENT: VALUE,... }}{ QUERY_NAM...

2018-11-13 15:02:17 409

原创 ElasticSearch最佳入门实践(四十六)_search api的基础语法介绍

1、search api的基本语法GET /search{}GET /index1,index2/type1,type2/search{}GET /_search{ "from": 0, "size": 10}2、http协议中get是否可以带上request bodyHTTP协议,一般不允许get请求带上request body,但是因为get更加适合描述查询数...

2018-11-13 14:55:38 247

原创 ElasticSearch最佳入门实践(四十五)_mapping复杂数据类型以及object类型数据底层结构大揭秘

1、multivalue field{ “tags”: [ “tag1”, “tag2” ]}建立索引时与string是一样的,重点是数据类型不能混,只能保持一致2、empty fieldnull,[],[null]3、object fieldaddress:object类型在object类型在 es 底层会变成这样{“name”: [su...

2018-11-13 14:40:52 542

原创 ElasticSearch最佳入门实践(四十四)手动建立和修改mapping以及定制string类型数据是否分词

1

2018-11-13 11:58:43 534

原创 ElasticSearch最佳入门实践(四十三)mapping 的核心数据类型以及 dynamic mapping

1、核心的数据类型stringbyte,short,integer,longfloat,doublebooleandate2、dynamic mappingtrue or false --> boolean123 --> long123.45 --> double2017-01-01 --> date“hello world” --> ..

2018-11-07 10:39:12 176

原创 ElasticSearch最佳入门实践(四十二)什么是mapping再次回炉透彻理解

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

2018-11-07 10:37:07 393

原创 ElasticSearch最佳入门实践(四十一)query string 的分词以及 mapping 引入案例遗留问题的大揭秘

1、query string分词query string必须以和index建立时相同的analyzer进行分词query string对exact value和full text的区别对待date:exact value_all:full text比如我们有一个document,其中有一个field,包含的value是:hello you and me,建立倒排索引我们要搜索这个...

2018-11-07 10:25:33 277

原创 ElasticSearch最佳入门实践(四十)分词器的内部组成到底是什么,以及内置分词器的介绍

1、什么是分词器一个分词器,很重要,将一段文本进行各种处理,最后处理好的结果才会拿去建立倒排索引切分词语,normalization(提升recall召回率)给你一段句子,然后将这段句子拆分成一个一个的单个的单词,同时对每个单词进行normalization(时态转换,单复数转换)recall,召回率:搜索的时候,增加能够搜索到的结果的数量character filter在...

2018-11-07 09:44:03 285

原创 ElasticSearch最佳入门实践(三十九)倒排索引核心原理揭秘

1、例子,两段文本doc1:I really liked my small dogs, and I think my mom also liked themdoc2:He never liked any dogs, so I hope that my mom will not expect me to liked him.2、初步的倒排索引的建立演示倒排索引最简单的建立的一个过程...

2018-11-06 17:54:21 341

原创 ElasticSearch最佳入门实践(三十八)精确匹配与全文搜索的对比分析

1、ES中的两种搜索模式1、exact value2、full text2、exact value2017-01-01,exact value,搜索的时候,必须输入2017-01-01,才能搜索出来。如果你输入一个01,是搜索不出来的搜索的值,必须是完全匹配3、full text(全文检索)(1)缩写 vs. 全程:cn vs. china(2)格式转化:like l...

2018-11-06 17:53:52 2754

原创 ElasticSearch最佳入门实践(三十七)用一个例子告诉你 mapping 到底是什么

1、插入几条数据PUT /website/article/1{ "post_date": "2017-01-01", "title": "my first article", "content": "this is my first article in this website&amp

2018-11-06 17:53:36 530

原创 ElasticSearch最佳入门实践(三十六)query string search 语法以及 _all metadata 原理揭秘

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:sea...

2018-11-06 17:53:21 404

Navicat Premium.7z

Navicat 是香港卓软数码科技有限公司生产的一系列 MySQL、MariaDB、Oracle、SQLite、PostgreSQL 及 Microsoft SQL Server 的图形化数据库管理及发展软件。它有一个类似浏览器的图形使用者界面,支援多重连线到本地和远端数据库。它的设计合乎各种使用者的需求,从数据库管理员和程序员,到各种为客户服务并与合作伙伴共享信息的不同企业或公司。

2020-06-28

bootstrap-treeview史上最强例子

强烈建议初次使用bootstrap的人参考,例子很全 bootstrap树控件使用bootstrap-treeview.js实现树前边多选框checkbox 并实现, 0、获取选中的项 1、点击父级的多选框,自己默认选中 2、全选 3、反选 4、展开、 5、折叠

2018-07-08

尚硅谷mybatis高深讲解

尚硅谷mybatis高深讲解全套视频...........................................................

2018-06-22

深入理解Java虚拟机视频教程

深入理解Java虚拟机视频教程(jvm性能调优+内存模型+虚拟机原理)

2018-06-18

myeclipse2017破解文件最新

下载该工具包,依照小博的教程一步一步来即可完美激活属于您自己的MyEclipse2017 CI7,教程末尾有惊喜哦。附上教程地址:http://blog.csdn.net/u012102104/article/details/76598477

2018-04-12

Java常用工具类

涵盖市面上,几乎所有工具类。收集了好久,谢谢各位打赏

2018-04-12

Cron生成表达式html源码

在线Cron表达式生成器html源码 quartz任务调度 Cron表达式 在线生成

2018-03-01

H+Hplus后台主题UI框架最新版带文档

H+是一个完全响应式,基于Bootstrap3.3.6最新版本开发的扁平化主题,采用了主流的左右两栏式布局,使用了Html5+CSS3等现代技术,她提供了诸多的强大的可以重新组合的UI组件,并集成了最新的jQuery版本(v2.1.4),当然,也集成了很多功能强大,用途广泛的jQuery插件,她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA等

2018-01-09

空空如也

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

TA关注的人

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