
Lucene5.5入门第二篇——Lucene全文检索的基本原理
前言
上一篇博文,笔者相当于了解了Lucene是干嘛的,然后写了个hello World增进下对Lucene的感觉。个人觉得,学习一个新的东西时,首先从demo入手,能增加你对这个技术的兴趣,然后慢慢的深入其中的原理,就会有种拨开乌云见明月的感觉。当然,有的人喜欢从原理入手,这个见仁见智。总结来说,不管从哪里入手,对一门新的技术而言总归要知道其所有然
正文
Lucene是一个高效的,基于Java的全文检索库。
所以在了解Lucene之前要费一番工夫了解一下全文检索。
那么什么叫做全文检索呢?这要从我们生活中的数据说起。
我们生活中的数据总体分为两种:结构化数据和非结构化数据。
结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。
非结构化数据:指不定长或无固定格式的数据,如邮件,word文档等。
当然有的地方还会提到第三种,半结构化数据,如XML,HTML等,当根据需要可按结构化数据来处理,也可抽取出纯文本按非结构化数据来处理。
非结构化数据又一种叫法叫全文数据。
按照数据的分类,搜索也分为两种:
对结构化数据的搜索:如对数据库的搜索,用SQL语句。再如对元数据的搜索,如利用windows搜索对文件名,类型,修改时间进行搜索等。
对非结构化数据的搜索:如利用windows的搜索也可以搜索文件内容,Linux下的grep命令,再如用Google和百度可以搜索大量内容数据。
对非结构化数据也即对全文数据的搜索主要有两种方法:
一种是顺序扫描法(Serial Scanning):所谓顺序扫描,比如 要找内容包含某一个字符串的文件,就是一个文档一个文档的看,对于每一个文档,从头看到尾,如果此文档包含此字符串,则此文档为我们要找的文件,接着看下 一个文件,直到扫描完所有的文件。如利用windows的搜索也可以搜索文件内容,只是相当的慢。如果你有一个80G硬盘,如果想在上面找到一个内容包含 某字符串的文件,不花他几个小时,怕是做不到。Linux下的grep命令也是这一种方式。大家可能觉得这种方法比较原始,但对于小数据量的文件,这种方 法还是最直接,最方便的。但是对于大量的文件,这种方法就很慢了。
有人可能会说,对非结构化数据顺序扫描很慢,对结构化数据的搜索却相对较快(由于结构化数据有一定的结构可以采取一定的搜索算法加快速度),那么把我们的非结构化数据想办法弄得有一定结构不就行了吗?
这种想法很天然,却构成了全文检索的基本思路,也即将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。
这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引。
这种说法比较抽象,举几个例子就很容易明白,比如字典,字典的拼音表和部首检字表就相当于字典的索引,对每一个字的解释是非结构化的,如果字典没有 音节表和部首检字表,在茫茫辞海中找一个字只能顺序扫描。然而字的某些信息可以提取出来进行结构化处理,比如读音,就比较结构化,分声母和韵母,分别只有 几种可以一一列举,于是将读音拿出来按一定的顺序排列,每一项读音都指向此字的详细解释的页数。我们搜索时按结构化的拼音搜到读音,然后按其指向的页数, 便可找到我们的非结构化数据——也即对字的解释。
这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)。
全文检索大体分两个过程,索引创建(Indexing)和搜索索引(Search)。
索引创建:将现实世界中所有的结构化和非结构化数据提取信息,创建索引的过程。
搜索索引:就是得到用户的查询请求,搜索创建的索引,然后返回结果的过程。
于是全文检索就存在三个重要问题:
1. 索引里面究竟存些什么?(Index)
2. 如何创建索引?(Indexing)
3. 如何对索引进行搜索?(Search)
下面我们顺序对每个个问题进行研究。
二、索引里面究竟存些什么
索引里面究竟需要存些什么呢?
首先我们来看为什么顺序扫描的速度慢:
其实是由于我们想要搜索的信息和非结构化数据中所存储的信息不一致造成的。
非结构化数据中所存储的信息是每个文件包含哪些字符串,也即已知文件,欲求字符串相对容易,也即是从文件到字符串的映射。而我们想搜索的信息是哪些 文件包含此字符串,也即已知字符串,欲求文件,也即从字符串到文件的映射。两者恰恰相反。于是如果索引总能够保存从字符串到文件的映射,则会大大提高搜索 速度。
由于从字符串到文件的映射是文件到字符串映射的反向过程,于是保存这种信息的索引称为反向索引。
反向索引的所保存的信息一般如下:
假设我的文档集合里面有100篇文档,为了方便表示,我们为文档编号从1到100,得到下面的结构
Lucene全文检索的基本原理
左边保存的是一系列字符串,称为词典。
每个字符串都指向包含此字符串的文档(Document)链表,此文档链表称为倒排表(Posting List)。
有了索引,便使保存的信息和要搜索的信息一致,可以大大加快搜索的速度。
比如说,我们要寻找既包含字符串“lucene”又包含字符串“solr”的文档,我们只需要以下几步:
1. 取出包含字符串“lucene”的文档链表。
2. 取出包含字符串“solr”的文档链表。
3. 通过合并链表,找出既包含“lucene”又包含“solr”的文件。
Lucene全文检索的基本原理
看到这个地方,有人可能会说,全文检索的确加快了搜索的速度,但是多了索引的过程,两者加起来不一定比顺序扫描快多少。的确,加上索引的过程,全文检索不一定比顺序扫描快,尤其是在数据量小的时候更是如此。而对一个很大量的数据创建索引也是一个很慢的过程。
然而两者还是有区别的,顺序扫描是每次都要扫描,而创建索引的过程仅仅需要一次,以后便是一劳永逸的了,每次搜索,创建索引的过程不必经过,仅仅搜索创建好的索引就可以了。
这也是全文搜索相对于顺序扫描的优势之一:一次索引,多次使用。
三、如何创建索引
全文检索的索引创建过程一般有以下几步:
第一步:一些要索引的原文档(DOCUMENT)。
为了方便说明索引创建过程,这里特意用两个文件为例:
文件一:Students should be allowed to go out with their friends, but not allowed to drink beer.
文件二:My friend Jerry went to school to see his students but found them drunk which is not allowed.
第二步:将原文档传给分次组件(TOKENIZER)。
分词组件(Tokenizer)会做以下几件事情(此过程称为Tokenize):
1. 将文档分成一个一个单独的单词。
2. 去除标点符号。
3. 去除停词(Stop word)。
所谓停词(Stop word)就是一种语言中最普通的一些单词,由于没有特别的意义,因而大多数情况下不能成为搜索的关键词,因而创建索引时,这种词会被去掉而减少索引的大小。
英语中挺词(Stop word)如:“the”,“a”,“this”等。
对于每一种语言的分词组件(Tokenizer),都有一个停词(stop word)集合。
经过分词(Tokenizer)后得到的结果称为词元(Token)。
在我们的例子中,便得到以下词元(Token):
“Students”,“allowed”,“go”,“their”,“friends”,“allowed”,“drink”,
“beer”,“My”,“friend”,“Jerry”,“went”,“school”,“see”,“his”,“
students”,“found”,“them”,“drunk”,“allowed”。
第三步:将得到的词元(TOKEN)传给语言处理组件(LINGUISTIC PROCESSOR)。
语言处理组件(linguistic processor)主要是对得到的词元(Token)做一些同语言相关的处理。
对于英语,语言处理组件(Linguistic Processor)一般做以下几点:
1. 变为小写(Lowercase)。
2. 将单词缩减为词根形式,如“cars”到“car”等。这种操作称为:stemming。
3. 将单词转变为词根形式,如“drove”到“drive”等。这种操作称为:lemmatization。
Stemming 和 lemmatization的异同:
相同之处:Stemming和lemmatization都要使词汇成为词根形式。
两者的方式不同:
Stemming采用的是“缩减”的方式:“cars”到“car”,“driving”到“drive”。
Lemmatization采用的是“转变”的方式:“drove”到“drove”,“driving”到“drive”。
两者的算法不同:
Stemming主要是采取某种固定的算法来做这种缩减,如去除“s”,去除“ing”加“e”,将“ational”变为“ate”,将“tional”变为“tion”。
Lemmatization主要是采用保存某种字典的方式做这种转变。比如字典中有“driving”到“drive”,“drove”到“drive”,“am, is, are”到“be”的映射,做转变时,只要查字典就可以了。
Stemming和lemmatization不是互斥关系,是有交集的,有的词利用这两种方式都能达到相同的转换。
语言处理组件(linguistic processor)的结果称为词(Term)。
在我们的例子中,经过语言处理,得到的词(Term)如下:
“student”,“allow”,“go”,“their”,“friend”,“allow”,“drink”,
“beer”,“my”,“friend”,“jerry”,“go”,“school”,“see”,“his”,
“student”,“find”,“them”,“drink”,“allow”。
也正是因为有语言处理的步骤,才能使搜索drove,而drive也能被搜索出来。
第四步:将得到的词(TERM)传给索引组件(INDEXER)。
原文地址:http://www.kailing.pub/article/index/arcid/72.html
再次吐槽这个编辑器,想要发个图片并茂的不容易
前言
上一篇博文,笔者相当于了解了Lucene是干嘛的,然后写了个hello World增进下对Lucene的感觉。个人觉得,学习一个新的东西时,首先从demo入手,能增加你对这个技术的兴趣,然后慢慢的深入其中的原理,就会有种拨开乌云见明月的感觉。当然,有的人喜欢从原理入手,这个见仁见智。总结来说,不管从哪里入手,对一门新的技术而言总归要知道其所有然
正文
Lucene是一个高效的,基于Java的全文检索库。
所以在了解Lucene之前要费一番工夫了解一下全文检索。
那么什么叫做全文检索呢?这要从我们生活中的数据说起。
我们生活中的数据总体分为两种:结构化数据和非结构化数据。
结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。
非结构化数据:指不定长或无固定格式的数据,如邮件,word文档等。
当然有的地方还会提到第三种,半结构化数据,如XML,HTML等,当根据需要可按结构化数据来处理,也可抽取出纯文本按非结构化数据来处理。
非结构化数据又一种叫法叫全文数据。
按照数据的分类,搜索也分为两种:
对结构化数据的搜索:如对数据库的搜索,用SQL语句。再如对元数据的搜索,如利用windows搜索对文件名,类型,修改时间进行搜索等。
对非结构化数据的搜索:如利用windows的搜索也可以搜索文件内容,Linux下的grep命令,再如用Google和百度可以搜索大量内容数据。
对非结构化数据也即对全文数据的搜索主要有两种方法:
一种是顺序扫描法(Serial Scanning):所谓顺序扫描,比如 要找内容包含某一个字符串的文件,就是一个文档一个文档的看,对于每一个文档,从头看到尾,如果此文档包含此字符串,则此文档为我们要找的文件,接着看下 一个文件,直到扫描完所有的文件。如利用windows的搜索也可以搜索文件内容,只是相当的慢。如果你有一个80G硬盘,如果想在上面找到一个内容包含 某字符串的文件,不花他几个小时,怕是做不到。Linux下的grep命令也是这一种方式。大家可能觉得这种方法比较原始,但对于小数据量的文件,这种方 法还是最直接,最方便的。但是对于大量的文件,这种方法就很慢了。
有人可能会说,对非结构化数据顺序扫描很慢,对结构化数据的搜索却相对较快(由于结构化数据有一定的结构可以采取一定的搜索算法加快速度),那么把我们的非结构化数据想办法弄得有一定结构不就行了吗?
这种想法很天然,却构成了全文检索的基本思路,也即将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。
这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引。
这种说法比较抽象,举几个例子就很容易明白,比如字典,字典的拼音表和部首检字表就相当于字典的索引,对每一个字的解释是非结构化的,如果字典没有 音节表和部首检字表,在茫茫辞海中找一个字只能顺序扫描。然而字的某些信息可以提取出来进行结构化处理,比如读音,就比较结构化,分声母和韵母,分别只有 几种可以一一列举,于是将读音拿出来按一定的顺序排列,每一项读音都指向此字的详细解释的页数。我们搜索时按结构化的拼音搜到读音,然后按其指向的页数, 便可找到我们的非结构化数据——也即对字的解释。
这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)。
全文检索大体分两个过程,索引创建(Indexing)和搜索索引(Search)。
索引创建:将现实世界中所有的结构化和非结构化数据提取信息,创建索引的过程。
搜索索引:就是得到用户的查询请求,搜索创建的索引,然后返回结果的过程。
于是全文检索就存在三个重要问题:
1. 索引里面究竟存些什么?(Index)
2. 如何创建索引?(Indexing)
3. 如何对索引进行搜索?(Search)
下面我们顺序对每个个问题进行研究。
二、索引里面究竟存些什么
索引里面究竟需要存些什么呢?
首先我们来看为什么顺序扫描的速度慢:
其实是由于我们想要搜索的信息和非结构化数据中所存储的信息不一致造成的。
非结构化数据中所存储的信息是每个文件包含哪些字符串,也即已知文件,欲求字符串相对容易,也即是从文件到字符串的映射。而我们想搜索的信息是哪些 文件包含此字符串,也即已知字符串,欲求文件,也即从字符串到文件的映射。两者恰恰相反。于是如果索引总能够保存从字符串到文件的映射,则会大大提高搜索 速度。
由于从字符串到文件的映射是文件到字符串映射的反向过程,于是保存这种信息的索引称为反向索引。
反向索引的所保存的信息一般如下:
假设我的文档集合里面有100篇文档,为了方便表示,我们为文档编号从1到100,得到下面的结构
Lucene全文检索的基本原理
左边保存的是一系列字符串,称为词典。
每个字符串都指向包含此字符串的文档(Document)链表,此文档链表称为倒排表(Posting List)。
有了索引,便使保存的信息和要搜索的信息一致,可以大大加快搜索的速度。
比如说,我们要寻找既包含字符串“lucene”又包含字符串“solr”的文档,我们只需要以下几步:
1. 取出包含字符串“lucene”的文档链表。
2. 取出包含字符串“solr”的文档链表。
3. 通过合并链表,找出既包含“lucene”又包含“solr”的文件。
Lucene全文检索的基本原理
看到这个地方,有人可能会说,全文检索的确加快了搜索的速度,但是多了索引的过程,两者加起来不一定比顺序扫描快多少。的确,加上索引的过程,全文检索不一定比顺序扫描快,尤其是在数据量小的时候更是如此。而对一个很大量的数据创建索引也是一个很慢的过程。
然而两者还是有区别的,顺序扫描是每次都要扫描,而创建索引的过程仅仅需要一次,以后便是一劳永逸的了,每次搜索,创建索引的过程不必经过,仅仅搜索创建好的索引就可以了。
这也是全文搜索相对于顺序扫描的优势之一:一次索引,多次使用。
三、如何创建索引
全文检索的索引创建过程一般有以下几步:
第一步:一些要索引的原文档(DOCUMENT)。
为了方便说明索引创建过程,这里特意用两个文件为例:
文件一:Students should be allowed to go out with their friends, but not allowed to drink beer.
文件二:My friend Jerry went to school to see his students but found them drunk which is not allowed.
第二步:将原文档传给分次组件(TOKENIZER)。
分词组件(Tokenizer)会做以下几件事情(此过程称为Tokenize):
1. 将文档分成一个一个单独的单词。
2. 去除标点符号。
3. 去除停词(Stop word)。
所谓停词(Stop word)就是一种语言中最普通的一些单词,由于没有特别的意义,因而大多数情况下不能成为搜索的关键词,因而创建索引时,这种词会被去掉而减少索引的大小。
英语中挺词(Stop word)如:“the”,“a”,“this”等。
对于每一种语言的分词组件(Tokenizer),都有一个停词(stop word)集合。
经过分词(Tokenizer)后得到的结果称为词元(Token)。
在我们的例子中,便得到以下词元(Token):
“Students”,“allowed”,“go”,“their”,“friends”,“allowed”,“drink”,
“beer”,“My”,“friend”,“Jerry”,“went”,“school”,“see”,“his”,“
students”,“found”,“them”,“drunk”,“allowed”。
第三步:将得到的词元(TOKEN)传给语言处理组件(LINGUISTIC PROCESSOR)。
语言处理组件(linguistic processor)主要是对得到的词元(Token)做一些同语言相关的处理。
对于英语,语言处理组件(Linguistic Processor)一般做以下几点:
1. 变为小写(Lowercase)。
2. 将单词缩减为词根形式,如“cars”到“car”等。这种操作称为:stemming。
3. 将单词转变为词根形式,如“drove”到“drive”等。这种操作称为:lemmatization。
Stemming 和 lemmatization的异同:
相同之处:Stemming和lemmatization都要使词汇成为词根形式。
两者的方式不同:
Stemming采用的是“缩减”的方式:“cars”到“car”,“driving”到“drive”。
Lemmatization采用的是“转变”的方式:“drove”到“drove”,“driving”到“drive”。
两者的算法不同:
Stemming主要是采取某种固定的算法来做这种缩减,如去除“s”,去除“ing”加“e”,将“ational”变为“ate”,将“tional”变为“tion”。
Lemmatization主要是采用保存某种字典的方式做这种转变。比如字典中有“driving”到“drive”,“drove”到“drive”,“am, is, are”到“be”的映射,做转变时,只要查字典就可以了。
Stemming和lemmatization不是互斥关系,是有交集的,有的词利用这两种方式都能达到相同的转换。
语言处理组件(linguistic processor)的结果称为词(Term)。
在我们的例子中,经过语言处理,得到的词(Term)如下:
“student”,“allow”,“go”,“their”,“friend”,“allow”,“drink”,
“beer”,“my”,“friend”,“jerry”,“go”,“school”,“see”,“his”,
“student”,“find”,“them”,“drink”,“allow”。
也正是因为有语言处理的步骤,才能使搜索drove,而drive也能被搜索出来。
第四步:将得到的词(TERM)传给索引组件(INDEXER)。
原文地址:http://www.kailing.pub/article/index/arcid/72.html
再次吐槽这个编辑器,想要发个图片并茂的不容易
收起阅读 »

Lucene5.5入门第一篇——hello World
Lucene板块好冷清,这里将我之前的入门的博文搬过来,填不下空白,欢迎拍砖
社区的富文本编辑器太low了,能不能换啊
继续阅读 »
认识Lucene
下面是百科对Lucene的描述:
Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。人们经常提到信息检索程序库,虽然与搜索引擎有关,但不应该将信息检索程序库与搜索引擎相混淆。
Lucene突出的优点
Lucene作为一个全文检索引擎,其具有如下突出的优点:
(1)索引文件格式独立于应用平台。Lucene定义了一套以8位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。
(2)在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。然后通过与原有索引的合并,达到优化的目的。
(3)优秀的面向对象的系统架构,使得对于Lucene扩展的学习难度降低,方便扩充新功能。
(4)设计了独立于语言和文件格式的文本分析接口,索引器通过接受Token流完成索引文件的创立,用户扩展新的语言和文件格式,只需要实现文本分析的接口。
(5)已经默认实现了一套强大的查询引擎,用户无需自己编写代码即可使系统可获得强大的查询能力,Lucene的查询实现中默认实现了布尔操作、模糊查询(Fuzzy Search[11])、分组查询等等。
面对已经存在的商业全文检索引擎,Lucene也具有相当的优势。
首先,它的开发源代码发行方式(遵守Apache Software License[12]),在此基础上程序员不仅仅可以充分的利用Lucene所提供的强大功能,而且可以深入细致的学习到全文检索引擎制作技术和面向对象编程的实践,进而在此基础上根据应用的实际情况编写出更好的更适合当前应用的全文检索引擎。在这一点上,商业软件的灵活性远远不及Lucene。
其次,Lucene秉承了开放源代码一贯的架构优良的优势,设计了一个合理而极具扩充能力的面向对象架构,程序员可以在Lucene的基础上扩充各种功能,比如扩充中文处理能力,从文本扩充到HTML、PDF[13]等等文本格式的处理,编写这些扩展的功能不仅仅不复杂,而且由于Lucene恰当合理的对系统设备做了程序上的抽象,扩展的功能也能轻易的达到跨平台的能力。
最后,转移到apache软件基金会后,借助于apache软件基金会的网络平台,程序员可以方便的和开发者、其它程序员交流,促成资源的共享,甚至直接获得已经编写完备的扩充功能。最后,虽然Lucene使用Java语言写成,但是开放源代码社区的程序员正在不懈的将之使用各种传统语言实现(例如.net framework[14]),在遵守Lucene索引文件格式的基础上,使得Lucene能够运行在各种各样的平台上,系统管理员可以根据当前的平台适合的语言来合理的选择。
入门前的准备
了解一些关键字的概念:
Document
Document 是用来描述文档的,这里的文档可以指一个 HTML 页面,一封电子邮件,或者是一个文本文件。一个 Document 对象由多个 Field 对象组成的。可以把一个 Document 对象想象成数据库中的一个记录,而每个 Field 对象就是记录的一个字段。
Field
Field 对象是用来描述一个文档的某个属性的,比如一封电子邮件的标题和内容可以用两个 Field 对象分别描述。
Analyzer
在一个文档被索引之前,首先需要对文档内容进行分词处理,这部分工作就是由 Analyzer 来做的。Analyzer 类是一个抽象类,它有多个实现。针对不同的语言和应用需要选择适合的 Analyzer。Analyzer 把分词后的内容交给 IndexWriter 来建立索引。
IndexWriter
IndexWriter 是 Lucene 用来创建索引的一个核心的类,他的作用是把一个个的 Document 对象加到索引中来。
Directory
这个类代表了 Lucene 的索引的存储的位置,这是一个抽象类,它目前有两个实现,第一个是 FSDirectory,它表示一个存储在文件系统中的索引的位置。第二个是 RAMDirectory,它表示一个存储在内存当中的索引的位置。
Query
这是一个抽象类,他有多个实现,比如 TermQuery, BooleanQuery, PrefixQuery. 这个类的目的是把用户输入的查询字符串封装成 Lucene 能够识别的 Query。
IndexSearcher
IndexSearcher 是用来在建立好的索引上进行搜索的。它只能以只读的方式打开一个索引,所以可以有多个 IndexSearcher 的实例在一个索引上进行操作。
Hits
Hits 是用来保存搜索结果的。
我的浅显理解
使用Lucene分为几个步骤,都是围绕索引展开的:
1.写索引 IndexWriter
2.读索引 IndexReader
3.查索引 IndexSearcher
4.封装查询条件,想到于写数据库的sql QueryParser
5.查询已查到的索引得到结果集 TopDocs ,可以得到Document的一个集合
正式入门,直接上代码
写索引:
package com.kl.luceneDemo;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.RAMDirectory;
import java.io.File;
import java.io.FileReader;
import java.nio.file.Paths;
/**
* @author kl by 2016/3/14
* @boke www.kailing.pub
*/
public class Indexer {
public IndexWriter writer;
/**
* 实例化写索引
*/
public Indexer(String indexDir)throws Exception{
Analyzer analyzer=new StandardAnalyzer();//分词器
IndexWriterConfig writerConfig=new IndexWriterConfig(analyzer);//写索引配置
//Directory ramDirectory= new RAMDirectory();//索引写的内存
Directory directory= FSDirectory.open(Paths.get(indexDir));//索引存储磁盘位置
writer=new IndexWriter(directory,writerConfig);//实例化一个写索引
}
/**
* 关闭写索引
* @throws Exception
*/
public void close()throws Exception{
writer.close();
}
/**
* 添加指定目录的所有文件的索引
* @param dataDir
* @return
* @throws Exception
*/
public int index(String dataDir)throws Exception{
File files=new File(dataDir).listFiles();//得到指定目录的文档数组
for(File file:files){
indexFile(file);
}
return writer.numDocs();
}
public void indexFile(File file)throws Exception{
System.out.println("索引文件:"+file.getCanonicalPath());//打印索引到的文件路径信息
Document document=getDocument(file);//得到一个文档信息,相对一个表记录
writer.addDocument(document);//写入到索引,相当于插入一个表记录
}
/**
* 返回一个文档记录
* @param file
* @return
* @throws Exception
*/
public Document getDocument(File file)throws Exception{
Document document=new Document();//实例化一个文档
document.add(new TextField("context",new FileReader(file)));//添加一个文档信息,相当于一个数据库表字段
document.add(new TextField("fileName",file.getName(), Field.Store.YES));//添加文档的名字属性
document.add(new TextField("filePath",file.getCanonicalPath(),Field.Store.YES));//添加文档的路径属性
return document;
}
public static void main(String ages){
String indexDir="E:\\LuceneIndex";
String dataDir="E:\\LuceneTestData";
Indexer indexer=null;
int indexSum=0;
try {
indexer=new Indexer(indexDir);
indexSum= indexer.index(dataDir);
System.out.printf("完成"+indexSum+"个文件的索引");
}catch (Exception e){
e.printStackTrace();
}finally {
try {
indexer.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
}
读查索引
package com.kl.luceneDemo;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import java.nio.file.Paths;
/**
* @author kl by 2016/3/14
* @boke www.kailing.pub
*/
public class Searcher {
public static void search(String indexDir,String q)throws Exception{
Directory dir= FSDirectory.open(Paths.get(indexDir));//索引地址
IndexReader reader= DirectoryReader.open(dir);//读索引
IndexSearcher is=new IndexSearcher(reader);
Analyzer analyzer=new StandardAnalyzer(); // 标准分词器
QueryParser parser=new QueryParser("context", analyzer);//指定查询Document的某个属性
Query query=parser.parse(q);//指定查询索引内容,对应某个分词
TopDocs hits=is.search(query, 10);//执行搜索
System.out.println("匹配 "+q+"查询到"+hits.totalHits+"个记录");
for(ScoreDoc scoreDoc:hits.scoreDocs){
Document doc=is.doc(scoreDoc.doc);
System.out.println(doc.get("fileName"));//打印Document的fileName属性
}
reader.close();
}
public static void main(String args) {
String indexDir="E:\\LuceneIndex";
String q="Muir";
try {
search(indexDir,q);
} catch (Exception e) {
e.printStackTrace();
}
}
}
以下图片是我的文件目录和Lucene生成的索引文件
原文地址:http://www.kailing.pub/article/index/arcid/71.html社区的富文本编辑器太low了,能不能换啊
Lucene板块好冷清,这里将我之前的入门的博文搬过来,填不下空白,欢迎拍砖
社区的富文本编辑器太low了,能不能换啊 收起阅读 »
认识Lucene
下面是百科对Lucene的描述:
Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。人们经常提到信息检索程序库,虽然与搜索引擎有关,但不应该将信息检索程序库与搜索引擎相混淆。
Lucene突出的优点
Lucene作为一个全文检索引擎,其具有如下突出的优点:
(1)索引文件格式独立于应用平台。Lucene定义了一套以8位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。
(2)在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。然后通过与原有索引的合并,达到优化的目的。
(3)优秀的面向对象的系统架构,使得对于Lucene扩展的学习难度降低,方便扩充新功能。
(4)设计了独立于语言和文件格式的文本分析接口,索引器通过接受Token流完成索引文件的创立,用户扩展新的语言和文件格式,只需要实现文本分析的接口。
(5)已经默认实现了一套强大的查询引擎,用户无需自己编写代码即可使系统可获得强大的查询能力,Lucene的查询实现中默认实现了布尔操作、模糊查询(Fuzzy Search[11])、分组查询等等。
面对已经存在的商业全文检索引擎,Lucene也具有相当的优势。
首先,它的开发源代码发行方式(遵守Apache Software License[12]),在此基础上程序员不仅仅可以充分的利用Lucene所提供的强大功能,而且可以深入细致的学习到全文检索引擎制作技术和面向对象编程的实践,进而在此基础上根据应用的实际情况编写出更好的更适合当前应用的全文检索引擎。在这一点上,商业软件的灵活性远远不及Lucene。
其次,Lucene秉承了开放源代码一贯的架构优良的优势,设计了一个合理而极具扩充能力的面向对象架构,程序员可以在Lucene的基础上扩充各种功能,比如扩充中文处理能力,从文本扩充到HTML、PDF[13]等等文本格式的处理,编写这些扩展的功能不仅仅不复杂,而且由于Lucene恰当合理的对系统设备做了程序上的抽象,扩展的功能也能轻易的达到跨平台的能力。
最后,转移到apache软件基金会后,借助于apache软件基金会的网络平台,程序员可以方便的和开发者、其它程序员交流,促成资源的共享,甚至直接获得已经编写完备的扩充功能。最后,虽然Lucene使用Java语言写成,但是开放源代码社区的程序员正在不懈的将之使用各种传统语言实现(例如.net framework[14]),在遵守Lucene索引文件格式的基础上,使得Lucene能够运行在各种各样的平台上,系统管理员可以根据当前的平台适合的语言来合理的选择。
入门前的准备
了解一些关键字的概念:
Document
Document 是用来描述文档的,这里的文档可以指一个 HTML 页面,一封电子邮件,或者是一个文本文件。一个 Document 对象由多个 Field 对象组成的。可以把一个 Document 对象想象成数据库中的一个记录,而每个 Field 对象就是记录的一个字段。
Field
Field 对象是用来描述一个文档的某个属性的,比如一封电子邮件的标题和内容可以用两个 Field 对象分别描述。
Analyzer
在一个文档被索引之前,首先需要对文档内容进行分词处理,这部分工作就是由 Analyzer 来做的。Analyzer 类是一个抽象类,它有多个实现。针对不同的语言和应用需要选择适合的 Analyzer。Analyzer 把分词后的内容交给 IndexWriter 来建立索引。
IndexWriter
IndexWriter 是 Lucene 用来创建索引的一个核心的类,他的作用是把一个个的 Document 对象加到索引中来。
Directory
这个类代表了 Lucene 的索引的存储的位置,这是一个抽象类,它目前有两个实现,第一个是 FSDirectory,它表示一个存储在文件系统中的索引的位置。第二个是 RAMDirectory,它表示一个存储在内存当中的索引的位置。
Query
这是一个抽象类,他有多个实现,比如 TermQuery, BooleanQuery, PrefixQuery. 这个类的目的是把用户输入的查询字符串封装成 Lucene 能够识别的 Query。
IndexSearcher
IndexSearcher 是用来在建立好的索引上进行搜索的。它只能以只读的方式打开一个索引,所以可以有多个 IndexSearcher 的实例在一个索引上进行操作。
Hits
Hits 是用来保存搜索结果的。
我的浅显理解
使用Lucene分为几个步骤,都是围绕索引展开的:
1.写索引 IndexWriter
2.读索引 IndexReader
3.查索引 IndexSearcher
4.封装查询条件,想到于写数据库的sql QueryParser
5.查询已查到的索引得到结果集 TopDocs ,可以得到Document的一个集合
正式入门,直接上代码
写索引:
package com.kl.luceneDemo;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.RAMDirectory;
import java.io.File;
import java.io.FileReader;
import java.nio.file.Paths;
/**
* @author kl by 2016/3/14
* @boke www.kailing.pub
*/
public class Indexer {
public IndexWriter writer;
/**
* 实例化写索引
*/
public Indexer(String indexDir)throws Exception{
Analyzer analyzer=new StandardAnalyzer();//分词器
IndexWriterConfig writerConfig=new IndexWriterConfig(analyzer);//写索引配置
//Directory ramDirectory= new RAMDirectory();//索引写的内存
Directory directory= FSDirectory.open(Paths.get(indexDir));//索引存储磁盘位置
writer=new IndexWriter(directory,writerConfig);//实例化一个写索引
}
/**
* 关闭写索引
* @throws Exception
*/
public void close()throws Exception{
writer.close();
}
/**
* 添加指定目录的所有文件的索引
* @param dataDir
* @return
* @throws Exception
*/
public int index(String dataDir)throws Exception{
File files=new File(dataDir).listFiles();//得到指定目录的文档数组
for(File file:files){
indexFile(file);
}
return writer.numDocs();
}
public void indexFile(File file)throws Exception{
System.out.println("索引文件:"+file.getCanonicalPath());//打印索引到的文件路径信息
Document document=getDocument(file);//得到一个文档信息,相对一个表记录
writer.addDocument(document);//写入到索引,相当于插入一个表记录
}
/**
* 返回一个文档记录
* @param file
* @return
* @throws Exception
*/
public Document getDocument(File file)throws Exception{
Document document=new Document();//实例化一个文档
document.add(new TextField("context",new FileReader(file)));//添加一个文档信息,相当于一个数据库表字段
document.add(new TextField("fileName",file.getName(), Field.Store.YES));//添加文档的名字属性
document.add(new TextField("filePath",file.getCanonicalPath(),Field.Store.YES));//添加文档的路径属性
return document;
}
public static void main(String ages){
String indexDir="E:\\LuceneIndex";
String dataDir="E:\\LuceneTestData";
Indexer indexer=null;
int indexSum=0;
try {
indexer=new Indexer(indexDir);
indexSum= indexer.index(dataDir);
System.out.printf("完成"+indexSum+"个文件的索引");
}catch (Exception e){
e.printStackTrace();
}finally {
try {
indexer.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
}
读查索引
package com.kl.luceneDemo;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import java.nio.file.Paths;
/**
* @author kl by 2016/3/14
* @boke www.kailing.pub
*/
public class Searcher {
public static void search(String indexDir,String q)throws Exception{
Directory dir= FSDirectory.open(Paths.get(indexDir));//索引地址
IndexReader reader= DirectoryReader.open(dir);//读索引
IndexSearcher is=new IndexSearcher(reader);
Analyzer analyzer=new StandardAnalyzer(); // 标准分词器
QueryParser parser=new QueryParser("context", analyzer);//指定查询Document的某个属性
Query query=parser.parse(q);//指定查询索引内容,对应某个分词
TopDocs hits=is.search(query, 10);//执行搜索
System.out.println("匹配 "+q+"查询到"+hits.totalHits+"个记录");
for(ScoreDoc scoreDoc:hits.scoreDocs){
Document doc=is.doc(scoreDoc.doc);
System.out.println(doc.get("fileName"));//打印Document的fileName属性
}
reader.close();
}
public static void main(String args) {
String indexDir="E:\\LuceneIndex";
String q="Muir";
try {
search(indexDir,q);
} catch (Exception e) {
e.printStackTrace();
}
}
}
以下图片是我的文件目录和Lucene生成的索引文件
原文地址:http://www.kailing.pub/article/index/arcid/71.html社区的富文本编辑器太low了,能不能换啊 收起阅读 »
kl 发表于 : 2016-06-24 11:00
评论 (3)

elasticsearch java api 增删改 操作
--添加数据
IndexRequestBuilder requestBuilder = null;
requestBuilder = client.prepareIndex(index, type, key).setRefresh(false);
requestBuilder.setSource(value).get();
--批量数据
BulkRequestBuilder bulkRequest = null;
bulkRequest = client.prepareBulk();
for (Map.Entry<String, Object> map : doc.entrySet()) {
bulkRequest.add(client.prepareIndex(index, type, map.getKey())
.setSource(CouchbaseUtil.GJSON.toJson(map.getValue())).setRefresh(false));
}
bulkRequest.get();
bulkRequest.request().requests().clear();
--更新数据
client.prepareUpdate().setIndex(index).setType(type).setId(id).setDoc(map).get();
--批量删除数据
BulkRequestBuilder bulk = null;
bulk = client.prepareBulk();
for (String id : ids) {
bulk.add(client.prepareDelete().setIndex(index).setType(type).setId(id));
}
bulk.get();
继续阅读 »
IndexRequestBuilder requestBuilder = null;
requestBuilder = client.prepareIndex(index, type, key).setRefresh(false);
requestBuilder.setSource(value).get();
--批量数据
BulkRequestBuilder bulkRequest = null;
bulkRequest = client.prepareBulk();
for (Map.Entry<String, Object> map : doc.entrySet()) {
bulkRequest.add(client.prepareIndex(index, type, map.getKey())
.setSource(CouchbaseUtil.GJSON.toJson(map.getValue())).setRefresh(false));
}
bulkRequest.get();
bulkRequest.request().requests().clear();
--更新数据
client.prepareUpdate().setIndex(index).setType(type).setId(id).setDoc(map).get();
--批量删除数据
BulkRequestBuilder bulk = null;
bulk = client.prepareBulk();
for (String id : ids) {
bulk.add(client.prepareDelete().setIndex(index).setType(type).setId(id));
}
bulk.get();
--添加数据
IndexRequestBuilder requestBuilder = null;
requestBuilder = client.prepareIndex(index, type, key).setRefresh(false);
requestBuilder.setSource(value).get();
--批量数据
BulkRequestBuilder bulkRequest = null;
bulkRequest = client.prepareBulk();
for (Map.Entry<String, Object> map : doc.entrySet()) {
bulkRequest.add(client.prepareIndex(index, type, map.getKey())
.setSource(CouchbaseUtil.GJSON.toJson(map.getValue())).setRefresh(false));
}
bulkRequest.get();
bulkRequest.request().requests().clear();
--更新数据
client.prepareUpdate().setIndex(index).setType(type).setId(id).setDoc(map).get();
--批量删除数据
BulkRequestBuilder bulk = null;
bulk = client.prepareBulk();
for (String id : ids) {
bulk.add(client.prepareDelete().setIndex(index).setType(type).setId(id));
}
bulk.get(); 收起阅读 »
IndexRequestBuilder requestBuilder = null;
requestBuilder = client.prepareIndex(index, type, key).setRefresh(false);
requestBuilder.setSource(value).get();
--批量数据
BulkRequestBuilder bulkRequest = null;
bulkRequest = client.prepareBulk();
for (Map.Entry<String, Object> map : doc.entrySet()) {
bulkRequest.add(client.prepareIndex(index, type, map.getKey())
.setSource(CouchbaseUtil.GJSON.toJson(map.getValue())).setRefresh(false));
}
bulkRequest.get();
bulkRequest.request().requests().clear();
--更新数据
client.prepareUpdate().setIndex(index).setType(type).setId(id).setDoc(map).get();
--批量删除数据
BulkRequestBuilder bulk = null;
bulk = client.prepareBulk();
for (String id : ids) {
bulk.add(client.prepareDelete().setIndex(index).setType(type).setId(id));
}
bulk.get(); 收起阅读 »

elasticsearch遍历所有数据集
BoolQueryBuilder bool=QueryBuilders.boolQuery();
SearchResponse searchResponse = esClient.prepareSearch("index")
.setTypes("type")
.setSize(10000)
//这个游标维持多长时间
.setScroll(TimeValue.timeValueMinutes(8))
.execute().actionGet();
System.out.println(searchResponse.getHits().getTotalHits());
while(true){
for (SearchHit hit : searchResponse.getHits()) {
System.out.println(hit.getSourceAsString()));
}
searchResponse = esClient.prepareSearchScroll(searchResponse.getScrollId())
.setScroll(TimeValue.timeValueMinutes(8))
.execute().actionGet();
if (searchResponse.getHits().getHits().length == 0) {
break;
}
}
继续阅读 »
SearchResponse searchResponse = esClient.prepareSearch("index")
.setTypes("type")
.setSize(10000)
//这个游标维持多长时间
.setScroll(TimeValue.timeValueMinutes(8))
.execute().actionGet();
System.out.println(searchResponse.getHits().getTotalHits());
while(true){
for (SearchHit hit : searchResponse.getHits()) {
System.out.println(hit.getSourceAsString()));
}
searchResponse = esClient.prepareSearchScroll(searchResponse.getScrollId())
.setScroll(TimeValue.timeValueMinutes(8))
.execute().actionGet();
if (searchResponse.getHits().getHits().length == 0) {
break;
}
}
BoolQueryBuilder bool=QueryBuilders.boolQuery();
SearchResponse searchResponse = esClient.prepareSearch("index")
.setTypes("type")
.setSize(10000)
//这个游标维持多长时间
.setScroll(TimeValue.timeValueMinutes(8))
.execute().actionGet();
System.out.println(searchResponse.getHits().getTotalHits());
while(true){
for (SearchHit hit : searchResponse.getHits()) {
System.out.println(hit.getSourceAsString()));
}
searchResponse = esClient.prepareSearchScroll(searchResponse.getScrollId())
.setScroll(TimeValue.timeValueMinutes(8))
.execute().actionGet();
if (searchResponse.getHits().getHits().length == 0) {
break;
}
} 收起阅读 »
SearchResponse searchResponse = esClient.prepareSearch("index")
.setTypes("type")
.setSize(10000)
//这个游标维持多长时间
.setScroll(TimeValue.timeValueMinutes(8))
.execute().actionGet();
System.out.println(searchResponse.getHits().getTotalHits());
while(true){
for (SearchHit hit : searchResponse.getHits()) {
System.out.println(hit.getSourceAsString()));
}
searchResponse = esClient.prepareSearchScroll(searchResponse.getScrollId())
.setScroll(TimeValue.timeValueMinutes(8))
.execute().actionGet();
if (searchResponse.getHits().getHits().length == 0) {
break;
}
} 收起阅读 »

南京Elastic社区第一次线下活动
1. 主办方
Elastic中文社区 趋势科技
2. 时间地点
活动时间:2016年6月25日 14:00 - 17:30
活动地点:雨花区软件大道48号苏豪国际广场B座(靠花神庙地铁站)
3. 主题
分享一:ES和Kibana在实时流量分析中的应用
演讲者简介:
杨润达 南京云利来软件科技有限公司研发部
主题简介:
流量的抓取和存储,流量的可视化,有关流量异常的案例分析,在线的kibana功能展示。
分享二:ELK平台SaaS化的问题和解决方案
演讲者简介:
王晓亮(Tomo Wang) 瀚思安信高级研发工程师
毕业于南京大学,曾就职于趋势科技、Opera,现任瀚思安信高级研发工程师,负责瀚思在线安全分析平台“安全易”的研发工作。
主题简介:
ELK(ElasticSearch,Logstash,Kibana)是一套有效的开源日志分析平台,它们作为工具使用非常便利,但是如果要围绕它们搭建在线服务,却有诸多问题。这次的分享主要介绍“安全易”在SaaS化ELK平台的过程中遇到的问题以及对应的技术方案。
分享三:ES在苏宁海量日志平台的实践
演讲者简介:
彭燕卿 苏宁云商IT总部监控研发中心技术副总监
9年软件研发经验,09年加入苏宁,先后从事了SOA系统开发、苏宁易购等大型网站的性能分析调优、监控平台等系统研发和架构工作,目前主要从事苏宁监控系统架构及技术管理工作,专注于APM以及Elasticsearch等实时计算领域。
主题简介:
实时日志平台ES架构演变,ES使用过程中遇到的坑及调优,Kibana二次开发等。
分享四:甲方安全看日志消息在ELK中的流转
演讲者简介:
李天爽 闻心科技上海研发中心总监
毕业于南京大学,曾担任趋势科技高级工程师,携程信息安全部资深安全研发工程师。
主题简介:
分享携程的日志平台架构、安全事件在ELK中的生命周期、ES的权限方案等。
分享五:ES在移动病毒分析和检测中的应用
演讲者简介:
李啸(White Li) 趋势科技中国研发中心资深工程师
毕业于南京邮电大学,曾就职于小米、百度,专注于大规模分布式系统的架构和运维,现负责趋势科技移动安全专家系统的开发工作。
主题简介:
介绍ES在样本分析、检测系统中的应用和逐步演变,重点探讨碰到的问题和解决方案。
4. 主题slides
ES南京meetup资料
继续阅读 »
Elastic中文社区 趋势科技
2. 时间地点
活动时间:2016年6月25日 14:00 - 17:30
活动地点:雨花区软件大道48号苏豪国际广场B座(靠花神庙地铁站)
3. 主题
分享一:ES和Kibana在实时流量分析中的应用
演讲者简介:
杨润达 南京云利来软件科技有限公司研发部
主题简介:
流量的抓取和存储,流量的可视化,有关流量异常的案例分析,在线的kibana功能展示。
分享二:ELK平台SaaS化的问题和解决方案
演讲者简介:
王晓亮(Tomo Wang) 瀚思安信高级研发工程师
毕业于南京大学,曾就职于趋势科技、Opera,现任瀚思安信高级研发工程师,负责瀚思在线安全分析平台“安全易”的研发工作。
主题简介:
ELK(ElasticSearch,Logstash,Kibana)是一套有效的开源日志分析平台,它们作为工具使用非常便利,但是如果要围绕它们搭建在线服务,却有诸多问题。这次的分享主要介绍“安全易”在SaaS化ELK平台的过程中遇到的问题以及对应的技术方案。
分享三:ES在苏宁海量日志平台的实践
演讲者简介:
彭燕卿 苏宁云商IT总部监控研发中心技术副总监
9年软件研发经验,09年加入苏宁,先后从事了SOA系统开发、苏宁易购等大型网站的性能分析调优、监控平台等系统研发和架构工作,目前主要从事苏宁监控系统架构及技术管理工作,专注于APM以及Elasticsearch等实时计算领域。
主题简介:
实时日志平台ES架构演变,ES使用过程中遇到的坑及调优,Kibana二次开发等。
分享四:甲方安全看日志消息在ELK中的流转
演讲者简介:
李天爽 闻心科技上海研发中心总监
毕业于南京大学,曾担任趋势科技高级工程师,携程信息安全部资深安全研发工程师。
主题简介:
分享携程的日志平台架构、安全事件在ELK中的生命周期、ES的权限方案等。
分享五:ES在移动病毒分析和检测中的应用
演讲者简介:
李啸(White Li) 趋势科技中国研发中心资深工程师
毕业于南京邮电大学,曾就职于小米、百度,专注于大规模分布式系统的架构和运维,现负责趋势科技移动安全专家系统的开发工作。
主题简介:
介绍ES在样本分析、检测系统中的应用和逐步演变,重点探讨碰到的问题和解决方案。
4. 主题slides
ES南京meetup资料
1. 主办方
Elastic中文社区 趋势科技
2. 时间地点
活动时间:2016年6月25日 14:00 - 17:30
活动地点:雨花区软件大道48号苏豪国际广场B座(靠花神庙地铁站)
3. 主题
分享一:ES和Kibana在实时流量分析中的应用
演讲者简介:
杨润达 南京云利来软件科技有限公司研发部
主题简介:
流量的抓取和存储,流量的可视化,有关流量异常的案例分析,在线的kibana功能展示。
分享二:ELK平台SaaS化的问题和解决方案
演讲者简介:
王晓亮(Tomo Wang) 瀚思安信高级研发工程师
毕业于南京大学,曾就职于趋势科技、Opera,现任瀚思安信高级研发工程师,负责瀚思在线安全分析平台“安全易”的研发工作。
主题简介:
ELK(ElasticSearch,Logstash,Kibana)是一套有效的开源日志分析平台,它们作为工具使用非常便利,但是如果要围绕它们搭建在线服务,却有诸多问题。这次的分享主要介绍“安全易”在SaaS化ELK平台的过程中遇到的问题以及对应的技术方案。
分享三:ES在苏宁海量日志平台的实践
演讲者简介:
彭燕卿 苏宁云商IT总部监控研发中心技术副总监
9年软件研发经验,09年加入苏宁,先后从事了SOA系统开发、苏宁易购等大型网站的性能分析调优、监控平台等系统研发和架构工作,目前主要从事苏宁监控系统架构及技术管理工作,专注于APM以及Elasticsearch等实时计算领域。
主题简介:
实时日志平台ES架构演变,ES使用过程中遇到的坑及调优,Kibana二次开发等。
分享四:甲方安全看日志消息在ELK中的流转
演讲者简介:
李天爽 闻心科技上海研发中心总监
毕业于南京大学,曾担任趋势科技高级工程师,携程信息安全部资深安全研发工程师。
主题简介:
分享携程的日志平台架构、安全事件在ELK中的生命周期、ES的权限方案等。
分享五:ES在移动病毒分析和检测中的应用
演讲者简介:
李啸(White Li) 趋势科技中国研发中心资深工程师
毕业于南京邮电大学,曾就职于小米、百度,专注于大规模分布式系统的架构和运维,现负责趋势科技移动安全专家系统的开发工作。
主题简介:
介绍ES在样本分析、检测系统中的应用和逐步演变,重点探讨碰到的问题和解决方案。
4. 主题slides
ES南京meetup资料
收起阅读 »
Elastic中文社区 趋势科技
2. 时间地点
活动时间:2016年6月25日 14:00 - 17:30
活动地点:雨花区软件大道48号苏豪国际广场B座(靠花神庙地铁站)
3. 主题
分享一:ES和Kibana在实时流量分析中的应用
演讲者简介:
杨润达 南京云利来软件科技有限公司研发部
主题简介:
流量的抓取和存储,流量的可视化,有关流量异常的案例分析,在线的kibana功能展示。
分享二:ELK平台SaaS化的问题和解决方案
演讲者简介:
王晓亮(Tomo Wang) 瀚思安信高级研发工程师
毕业于南京大学,曾就职于趋势科技、Opera,现任瀚思安信高级研发工程师,负责瀚思在线安全分析平台“安全易”的研发工作。
主题简介:
ELK(ElasticSearch,Logstash,Kibana)是一套有效的开源日志分析平台,它们作为工具使用非常便利,但是如果要围绕它们搭建在线服务,却有诸多问题。这次的分享主要介绍“安全易”在SaaS化ELK平台的过程中遇到的问题以及对应的技术方案。
分享三:ES在苏宁海量日志平台的实践
演讲者简介:
彭燕卿 苏宁云商IT总部监控研发中心技术副总监
9年软件研发经验,09年加入苏宁,先后从事了SOA系统开发、苏宁易购等大型网站的性能分析调优、监控平台等系统研发和架构工作,目前主要从事苏宁监控系统架构及技术管理工作,专注于APM以及Elasticsearch等实时计算领域。
主题简介:
实时日志平台ES架构演变,ES使用过程中遇到的坑及调优,Kibana二次开发等。
分享四:甲方安全看日志消息在ELK中的流转
演讲者简介:
李天爽 闻心科技上海研发中心总监
毕业于南京大学,曾担任趋势科技高级工程师,携程信息安全部资深安全研发工程师。
主题简介:
分享携程的日志平台架构、安全事件在ELK中的生命周期、ES的权限方案等。
分享五:ES在移动病毒分析和检测中的应用
演讲者简介:
李啸(White Li) 趋势科技中国研发中心资深工程师
毕业于南京邮电大学,曾就职于小米、百度,专注于大规模分布式系统的架构和运维,现负责趋势科技移动安全专家系统的开发工作。
主题简介:
介绍ES在样本分析、检测系统中的应用和逐步演变,重点探讨碰到的问题和解决方案。
4. 主题slides
ES南京meetup资料
收起阅读 »

杭州 Elastic社区第一次线下活动 开始报名啦!!!
PPT下载地址:
百度云盘: http://pan.baidu.com/s/1slQn93v 提取码:jqqi
淘云盘: http://yunpan.taobao.com/s/E2TDSFivxt 提取码: vwIWlm
Elastic 中文社区联手杭州码耘网络共同举办第一次线下聚会,欢迎对elastic、搜索、大数据等技术感兴趣的朋友来玩玩

分享主题 :
报名方式:
乘车:
附近公交站:
地铁:
ps : 如果到了滨江不认识路,可以打我手机(15858279062) 我可以来接你。
继续阅读 »
百度云盘: http://pan.baidu.com/s/1slQn93v 提取码:jqqi
淘云盘: http://yunpan.taobao.com/s/E2TDSFivxt 提取码: vwIWlm
Elastic 中文社区联手杭州码耘网络共同举办第一次线下聚会,欢迎对elastic、搜索、大数据等技术感兴趣的朋友来玩玩
- 时间:2016-6-18 13:00:00
- 地点:杭州市滨江区上峰电商产品园1-227(从聚才路门口进来会比较近,离阿里网易5分钟路程)

分享主题 :
- 有赞搜索引擎实践 —— 洪斌@有赞大数据团队负责人
- Elastic结合Hbase的应用实践 —— 汪兴@浙大中控
- 购阿购数据分析平台对Elasticsearch使用实践 —— 万斌@北京购阿购技术服务有限公司
- beats介绍与扩展 —— 曾勇@elastic
- 基于ELK的云日志产品实践 —— 宁海元@袋鼠云
- elasticsearch-jdbc介绍以及基于binlog的增量数据同步方案 —— 卢栋@码耘网络
报名方式:
- 扫描下面微信二维码加入杭州Elastic聚会群,成功加入即算报名成功
- 无法扫描的同学加我微信(573513542),我来拉你进群
乘车:
附近公交站:
- 秋溢路聚才路口(139路直达)
- 江虹路秋溢路口(139路、175路)
- 滨安路江虹路口(225、B支6 路)
地铁:
- 坐到滨和路站或者西兴站,然后打车过来起步价
ps : 如果到了滨江不认识路,可以打我手机(15858279062) 我可以来接你。
PPT下载地址:
百度云盘: http://pan.baidu.com/s/1slQn93v 提取码:jqqi
淘云盘: http://yunpan.taobao.com/s/E2TDSFivxt 提取码: vwIWlm
Elastic 中文社区联手杭州码耘网络共同举办第一次线下聚会,欢迎对elastic、搜索、大数据等技术感兴趣的朋友来玩玩

分享主题 :
报名方式:
乘车:
附近公交站:
地铁:
ps : 如果到了滨江不认识路,可以打我手机(15858279062) 我可以来接你。
收起阅读 »
百度云盘: http://pan.baidu.com/s/1slQn93v 提取码:jqqi
淘云盘: http://yunpan.taobao.com/s/E2TDSFivxt 提取码: vwIWlm
Elastic 中文社区联手杭州码耘网络共同举办第一次线下聚会,欢迎对elastic、搜索、大数据等技术感兴趣的朋友来玩玩
- 时间:2016-6-18 13:00:00
- 地点:杭州市滨江区上峰电商产品园1-227(从聚才路门口进来会比较近,离阿里网易5分钟路程)

分享主题 :
- 有赞搜索引擎实践 —— 洪斌@有赞大数据团队负责人
- Elastic结合Hbase的应用实践 —— 汪兴@浙大中控
- 购阿购数据分析平台对Elasticsearch使用实践 —— 万斌@北京购阿购技术服务有限公司
- beats介绍与扩展 —— 曾勇@elastic
- 基于ELK的云日志产品实践 —— 宁海元@袋鼠云
- elasticsearch-jdbc介绍以及基于binlog的增量数据同步方案 —— 卢栋@码耘网络
报名方式:
- 扫描下面微信二维码加入杭州Elastic聚会群,成功加入即算报名成功
- 无法扫描的同学加我微信(573513542),我来拉你进群
乘车:
附近公交站:
- 秋溢路聚才路口(139路直达)
- 江虹路秋溢路口(139路、175路)
- 滨安路江虹路口(225、B支6 路)
地铁:
- 坐到滨和路站或者西兴站,然后打车过来起步价
ps : 如果到了滨江不认识路,可以打我手机(15858279062) 我可以来接你。
收起阅读 »

【招聘】ML/ES/DOCKER方向兼职培训师/讲师
公司介绍:NobleProg(诺波中国),公司成立于2005年,总部设在英国伦敦并在欧洲和美国建立了特许经营和分公司。2015年来到中国,面对国内企业提供人工智能、IT、统计、管理、编程的培训和咨询服务。
聘Machine Learning/Elasticserach/Ducker and kubemetes三个方向兼职培训师/讲师。
基本要求如下:
1、具有丰富的理论知识和技能;
2、有一定的项目经验(这包括你是项目leader或项目组成员);
3、有培训师或讲师的经验最佳;
4、可以依据我们提供的培训大纲结合客户需求做出培训计划;
5、可授受出差(视项目决定);
6、可接受兼职;
7、薪资待遇请与我们商谈。
公司网站:http://www.nobleprog.cn/training
对以上招聘信息感兴趣,请与我们联系。
Tina
手机:18610650025
QQ:1575119117
继续阅读 »
聘Machine Learning/Elasticserach/Ducker and kubemetes三个方向兼职培训师/讲师。
基本要求如下:
1、具有丰富的理论知识和技能;
2、有一定的项目经验(这包括你是项目leader或项目组成员);
3、有培训师或讲师的经验最佳;
4、可以依据我们提供的培训大纲结合客户需求做出培训计划;
5、可授受出差(视项目决定);
6、可接受兼职;
7、薪资待遇请与我们商谈。
公司网站:http://www.nobleprog.cn/training
对以上招聘信息感兴趣,请与我们联系。
Tina
手机:18610650025
QQ:1575119117
公司介绍:NobleProg(诺波中国),公司成立于2005年,总部设在英国伦敦并在欧洲和美国建立了特许经营和分公司。2015年来到中国,面对国内企业提供人工智能、IT、统计、管理、编程的培训和咨询服务。
聘Machine Learning/Elasticserach/Ducker and kubemetes三个方向兼职培训师/讲师。
基本要求如下:
1、具有丰富的理论知识和技能;
2、有一定的项目经验(这包括你是项目leader或项目组成员);
3、有培训师或讲师的经验最佳;
4、可以依据我们提供的培训大纲结合客户需求做出培训计划;
5、可授受出差(视项目决定);
6、可接受兼职;
7、薪资待遇请与我们商谈。
公司网站:http://www.nobleprog.cn/training
对以上招聘信息感兴趣,请与我们联系。
Tina
手机:18610650025
QQ:1575119117 收起阅读 »
聘Machine Learning/Elasticserach/Ducker and kubemetes三个方向兼职培训师/讲师。
基本要求如下:
1、具有丰富的理论知识和技能;
2、有一定的项目经验(这包括你是项目leader或项目组成员);
3、有培训师或讲师的经验最佳;
4、可以依据我们提供的培训大纲结合客户需求做出培训计划;
5、可授受出差(视项目决定);
6、可接受兼职;
7、薪资待遇请与我们商谈。
公司网站:http://www.nobleprog.cn/training
对以上招聘信息感兴趣,请与我们联系。
Tina
手机:18610650025
QQ:1575119117 收起阅读 »
Tina 发表于 : 2016-05-24 21:21
评论 (0)

发布个es迁移工具:elasticsearch-migration
https://github.com/medcl/elasticsearch-migration
支持多个版本间的数据迁移,使用scroll+bulk
1.版本支持1.x,2.x.5.0 (0.x未测试)
2.支持http basic auth 认证的es集群
3.支持导入覆盖索引名称(目前只支持单个索引导入的情况下可指定)
4.支持index setting和mapping的同步(相关es大版本,2.x和5.0之间不支持)
5.支持dump到本地文件
6.支持从dump文件加载导入到指定索引
欢迎测试!
继续阅读 »
支持多个版本间的数据迁移,使用scroll+bulk
1.版本支持1.x,2.x.5.0 (0.x未测试)
2.支持http basic auth 认证的es集群
3.支持导入覆盖索引名称(目前只支持单个索引导入的情况下可指定)
4.支持index setting和mapping的同步(相关es大版本,2.x和5.0之间不支持)
5.支持dump到本地文件
6.支持从dump文件加载导入到指定索引
欢迎测试!
#copy index index_name from 192.168.1.x to 192.168.1.y:9200
./bin/esm -s http://192.168.1.x:9200 -d http://192.168.1.y:9200 -x index_name -w=5 -b=10 -c 10000
#copy index src_index from 192.168.1.x to 192.168.1.y:9200 and save with dest_index
./bin/esm -s http://localhost:9200 -d http://localhost:9200 -x src_index -y dest_index -w=5 -b=100
#support Basic-Auth
./bin/esm -s http://localhost:9200/ -x "src_index" -y "dest_index" -d http://localhost:9201 -n admin:111111
#copy settings and override shard size
./bin/esm -s http://localhost:9200/ -x "src_index" -y "dest_index" -d http://localhost:9201 -m admin:111111 -c 10000 --shards=50 --copy_settings
#copy settings and mapping, recreate target index, add query to source fetch, refresh after migration
./bin/esm -s http://localhost:9200/ -x "src_index" -q=query:phone -y "dest_index" -d http://localhost:9201 -c 10000 --shards=5 --copy_settings --copy_mapping --force --refresh
#dump elasticsearch documents into local file
./bin/esm -s http://localhost:9200 -x "src_index" -m admin:111111 -c 5000 -b -q=query:mixer --refresh -o=dump.bin
#loading data from dump files, bulk insert to another es instance
./bin/esm -d http://localhost:9200 -y "dest_index" -n admin:111111 -c 5000 -b 5 --refresh -i=dump.bin
https://github.com/medcl/elasticsearch-migration
支持多个版本间的数据迁移,使用scroll+bulk
1.版本支持1.x,2.x.5.0 (0.x未测试)
2.支持http basic auth 认证的es集群
3.支持导入覆盖索引名称(目前只支持单个索引导入的情况下可指定)
4.支持index setting和mapping的同步(相关es大版本,2.x和5.0之间不支持)
5.支持dump到本地文件
6.支持从dump文件加载导入到指定索引
欢迎测试!
收起阅读 »
支持多个版本间的数据迁移,使用scroll+bulk
1.版本支持1.x,2.x.5.0 (0.x未测试)
2.支持http basic auth 认证的es集群
3.支持导入覆盖索引名称(目前只支持单个索引导入的情况下可指定)
4.支持index setting和mapping的同步(相关es大版本,2.x和5.0之间不支持)
5.支持dump到本地文件
6.支持从dump文件加载导入到指定索引
欢迎测试!
#copy index index_name from 192.168.1.x to 192.168.1.y:9200
./bin/esm -s http://192.168.1.x:9200 -d http://192.168.1.y:9200 -x index_name -w=5 -b=10 -c 10000
#copy index src_index from 192.168.1.x to 192.168.1.y:9200 and save with dest_index
./bin/esm -s http://localhost:9200 -d http://localhost:9200 -x src_index -y dest_index -w=5 -b=100
#support Basic-Auth
./bin/esm -s http://localhost:9200/ -x "src_index" -y "dest_index" -d http://localhost:9201 -n admin:111111
#copy settings and override shard size
./bin/esm -s http://localhost:9200/ -x "src_index" -y "dest_index" -d http://localhost:9201 -m admin:111111 -c 10000 --shards=50 --copy_settings
#copy settings and mapping, recreate target index, add query to source fetch, refresh after migration
./bin/esm -s http://localhost:9200/ -x "src_index" -q=query:phone -y "dest_index" -d http://localhost:9201 -c 10000 --shards=5 --copy_settings --copy_mapping --force --refresh
#dump elasticsearch documents into local file
./bin/esm -s http://localhost:9200 -x "src_index" -m admin:111111 -c 5000 -b -q=query:mixer --refresh -o=dump.bin
#loading data from dump files, bulk insert to another es instance
./bin/esm -d http://localhost:9200 -y "dest_index" -n admin:111111 -c 5000 -b 5 --refresh -i=dump.bin
收起阅读 »

北京 Elastic社区第一次线下活动
1、主办方:
ElasticSearch中文社区 奇点机智
2、时间与地点:
5月15日14:00 - 17:30(周日)
北京海淀区中关村鼎好电子大厦太库孵化器路演厅
沙龙主题:
分享一:5miles基于es的对外搜索业务实践
王浩宇
5miles搜索工程师
主题简介:
和大家交流一些5miles对外搜索业务中的工作,例如基于es function_score 的rerank的实现,通过geohash减少请求,通过多个data center来实现请求异步,风险控制等
分享二: Elasticsearch与Spark的整合
祝威廉
多年大数据经验,现专注于Spark/ES 相关领域
主题简介:
个人对ElasticSearch 和 Spark的整合一些看法,简要介绍通过对elasticsearch-hadoop项目的改进,以Spark 和 ElasticSearch 为依托,构建一个Ad-Hoc 查询引擎。
分享三:ElasticStack 5.0 介绍
medcl
Developer@Elastic
主题简介:
ElasticStack 5.0的新特性介绍
活动流程:
13:00-13:45 签到及入场
13:45-14:00 主持人介绍活动
14:00-15:00 王浩宇 5miles基于es的对外搜索业务实践
15:00-16:00 祝威廉 ElasticSearch 与 Spark 的整合
16:00-16:30 茶歇与自由沟通
16:30-17:30 medcl ElasticStack 5.0 介绍
报名方式:
本次活动全程免费,欢迎报名
http://www.huodongxing.com/event/6334153926600#rd
活动联系:
联系人:凌霄
手机:18600209779
邮箱:hellolingxiao@gmail.com
想要加入Elastic北京微信群,扫描上方二维码加小助手拉你进群
继续阅读 »
ElasticSearch中文社区 奇点机智
2、时间与地点:
5月15日14:00 - 17:30(周日)
北京海淀区中关村鼎好电子大厦太库孵化器路演厅
沙龙主题:
分享一:5miles基于es的对外搜索业务实践
王浩宇
5miles搜索工程师
主题简介:
和大家交流一些5miles对外搜索业务中的工作,例如基于es function_score 的rerank的实现,通过geohash减少请求,通过多个data center来实现请求异步,风险控制等
分享二: Elasticsearch与Spark的整合
祝威廉
多年大数据经验,现专注于Spark/ES 相关领域
主题简介:
个人对ElasticSearch 和 Spark的整合一些看法,简要介绍通过对elasticsearch-hadoop项目的改进,以Spark 和 ElasticSearch 为依托,构建一个Ad-Hoc 查询引擎。
分享三:ElasticStack 5.0 介绍
medcl
Developer@Elastic
主题简介:
ElasticStack 5.0的新特性介绍
活动流程:
13:00-13:45 签到及入场
13:45-14:00 主持人介绍活动
14:00-15:00 王浩宇 5miles基于es的对外搜索业务实践
15:00-16:00 祝威廉 ElasticSearch 与 Spark 的整合
16:00-16:30 茶歇与自由沟通
16:30-17:30 medcl ElasticStack 5.0 介绍
报名方式:
本次活动全程免费,欢迎报名
http://www.huodongxing.com/event/6334153926600#rd
活动联系:
联系人:凌霄
手机:18600209779
邮箱:hellolingxiao@gmail.com
想要加入Elastic北京微信群,扫描上方二维码加小助手拉你进群
1、主办方:
ElasticSearch中文社区 奇点机智
2、时间与地点:
5月15日14:00 - 17:30(周日)
北京海淀区中关村鼎好电子大厦太库孵化器路演厅
沙龙主题:
分享一:5miles基于es的对外搜索业务实践
王浩宇
5miles搜索工程师
主题简介:
和大家交流一些5miles对外搜索业务中的工作,例如基于es function_score 的rerank的实现,通过geohash减少请求,通过多个data center来实现请求异步,风险控制等
分享二: Elasticsearch与Spark的整合
祝威廉
多年大数据经验,现专注于Spark/ES 相关领域
主题简介:
个人对ElasticSearch 和 Spark的整合一些看法,简要介绍通过对elasticsearch-hadoop项目的改进,以Spark 和 ElasticSearch 为依托,构建一个Ad-Hoc 查询引擎。
分享三:ElasticStack 5.0 介绍
medcl
Developer@Elastic
主题简介:
ElasticStack 5.0的新特性介绍
活动流程:
13:00-13:45 签到及入场
13:45-14:00 主持人介绍活动
14:00-15:00 王浩宇 5miles基于es的对外搜索业务实践
15:00-16:00 祝威廉 ElasticSearch 与 Spark 的整合
16:00-16:30 茶歇与自由沟通
16:30-17:30 medcl ElasticStack 5.0 介绍
报名方式:
本次活动全程免费,欢迎报名
http://www.huodongxing.com/event/6334153926600#rd
活动联系:
联系人:凌霄
手机:18600209779
邮箱:hellolingxiao@gmail.com
想要加入Elastic北京微信群,扫描上方二维码加小助手拉你进群
收起阅读 »
ElasticSearch中文社区 奇点机智
2、时间与地点:
5月15日14:00 - 17:30(周日)
北京海淀区中关村鼎好电子大厦太库孵化器路演厅
沙龙主题:
分享一:5miles基于es的对外搜索业务实践
王浩宇
5miles搜索工程师
主题简介:
和大家交流一些5miles对外搜索业务中的工作,例如基于es function_score 的rerank的实现,通过geohash减少请求,通过多个data center来实现请求异步,风险控制等
分享二: Elasticsearch与Spark的整合
祝威廉
多年大数据经验,现专注于Spark/ES 相关领域
主题简介:
个人对ElasticSearch 和 Spark的整合一些看法,简要介绍通过对elasticsearch-hadoop项目的改进,以Spark 和 ElasticSearch 为依托,构建一个Ad-Hoc 查询引擎。
分享三:ElasticStack 5.0 介绍
medcl
Developer@Elastic
主题简介:
ElasticStack 5.0的新特性介绍
活动流程:
13:00-13:45 签到及入场
13:45-14:00 主持人介绍活动
14:00-15:00 王浩宇 5miles基于es的对外搜索业务实践
15:00-16:00 祝威廉 ElasticSearch 与 Spark 的整合
16:00-16:30 茶歇与自由沟通
16:30-17:30 medcl ElasticStack 5.0 介绍
报名方式:
本次活动全程免费,欢迎报名
http://www.huodongxing.com/event/6334153926600#rd
活动联系:
联系人:凌霄
手机:18600209779
邮箱:hellolingxiao@gmail.com
想要加入Elastic北京微信群,扫描上方二维码加小助手拉你进群
收起阅读 »

es分词索引创建
{
"settings": {
"index": {
"number_of_replicas": "0",
"number_of_shards": "5",
"refresh_interval": "-1",
"translog.flush_threshold_ops": "100000"
}
},
"mappings": {
"etp_t": {
"properties": {
"dd": {
"type": "multi_field",
"fields": {
"pn": {
"type": "string",
"store": "yes",
"analyzer": "pinyin_first_letter",
"search_analyzer": "pinyin_first_letter"
},
"pk": {
"type": "string",
"store": "yes",
"analyzer": "pinyin_ngram_analyzer",
"search_analyzer": "pinyin_ngram_analyzer"
},
"cn": {
"type": "string",
"store": "yes",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word",
"term_vector": "with_positions_offsets",
"boost": 10
},
"un": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
}
继续阅读 »
"settings": {
"index": {
"number_of_replicas": "0",
"number_of_shards": "5",
"refresh_interval": "-1",
"translog.flush_threshold_ops": "100000"
}
},
"mappings": {
"etp_t": {
"properties": {
"dd": {
"type": "multi_field",
"fields": {
"pn": {
"type": "string",
"store": "yes",
"analyzer": "pinyin_first_letter",
"search_analyzer": "pinyin_first_letter"
},
"pk": {
"type": "string",
"store": "yes",
"analyzer": "pinyin_ngram_analyzer",
"search_analyzer": "pinyin_ngram_analyzer"
},
"cn": {
"type": "string",
"store": "yes",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word",
"term_vector": "with_positions_offsets",
"boost": 10
},
"un": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
}
{
"settings": {
"index": {
"number_of_replicas": "0",
"number_of_shards": "5",
"refresh_interval": "-1",
"translog.flush_threshold_ops": "100000"
}
},
"mappings": {
"etp_t": {
"properties": {
"dd": {
"type": "multi_field",
"fields": {
"pn": {
"type": "string",
"store": "yes",
"analyzer": "pinyin_first_letter",
"search_analyzer": "pinyin_first_letter"
},
"pk": {
"type": "string",
"store": "yes",
"analyzer": "pinyin_ngram_analyzer",
"search_analyzer": "pinyin_ngram_analyzer"
},
"cn": {
"type": "string",
"store": "yes",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word",
"term_vector": "with_positions_offsets",
"boost": 10
},
"un": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
} 收起阅读 »
"settings": {
"index": {
"number_of_replicas": "0",
"number_of_shards": "5",
"refresh_interval": "-1",
"translog.flush_threshold_ops": "100000"
}
},
"mappings": {
"etp_t": {
"properties": {
"dd": {
"type": "multi_field",
"fields": {
"pn": {
"type": "string",
"store": "yes",
"analyzer": "pinyin_first_letter",
"search_analyzer": "pinyin_first_letter"
},
"pk": {
"type": "string",
"store": "yes",
"analyzer": "pinyin_ngram_analyzer",
"search_analyzer": "pinyin_ngram_analyzer"
},
"cn": {
"type": "string",
"store": "yes",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word",
"term_vector": "with_positions_offsets",
"boost": 10
},
"un": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
} 收起阅读 »

【内附讲师干货PPT】首届ES中文社区技术沙龙广州站圆满举行咯
4月23日,首届Elasticsearch中文社区技术沙龙【广州站】在广州筑梦咖啡成功举行。
2016年ES中文社区全国巡回技术沙龙,分别在北京、上海、广州三地召开。【广州站】由ES中文社区和数说故事共同举办,主题为“企业级搜索引擎与大数据实战分享”,共吸引了来自腾讯、网易、欢聚时代、金蝶及舜飞科技等企业的共120+观众到现场交流。来自于欢聚时代的赖鸿智、数说故事的黄耀鸿、塔布数据的何金城三位ES大牛从入门到实战经验给现场观众带来了一次关于ES的干货分享。
三位讲师分别从【入门】:ES优化技巧及工具推荐、【重点】基于父子文档实现的ES关联查询、【实战】亿级规模的ES查询优化实战三个层面对ES进行了介绍。赖鸿智指出自己在2011年就已经接触到ES,对于ES的初学者他从管理及监控两个方面做了一些工具的推荐。
更多精彩内容,下载讲师ppt吧
http://pan.baidu.com/s/1sliR7qP
提取密码:v5p3
继续阅读 »
2016年ES中文社区全国巡回技术沙龙,分别在北京、上海、广州三地召开。【广州站】由ES中文社区和数说故事共同举办,主题为“企业级搜索引擎与大数据实战分享”,共吸引了来自腾讯、网易、欢聚时代、金蝶及舜飞科技等企业的共120+观众到现场交流。来自于欢聚时代的赖鸿智、数说故事的黄耀鸿、塔布数据的何金城三位ES大牛从入门到实战经验给现场观众带来了一次关于ES的干货分享。
三位讲师分别从【入门】:ES优化技巧及工具推荐、【重点】基于父子文档实现的ES关联查询、【实战】亿级规模的ES查询优化实战三个层面对ES进行了介绍。赖鸿智指出自己在2011年就已经接触到ES,对于ES的初学者他从管理及监控两个方面做了一些工具的推荐。
更多精彩内容,下载讲师ppt吧
http://pan.baidu.com/s/1sliR7qP
提取密码:v5p3
4月23日,首届Elasticsearch中文社区技术沙龙【广州站】在广州筑梦咖啡成功举行。
2016年ES中文社区全国巡回技术沙龙,分别在北京、上海、广州三地召开。【广州站】由ES中文社区和数说故事共同举办,主题为“企业级搜索引擎与大数据实战分享”,共吸引了来自腾讯、网易、欢聚时代、金蝶及舜飞科技等企业的共120+观众到现场交流。来自于欢聚时代的赖鸿智、数说故事的黄耀鸿、塔布数据的何金城三位ES大牛从入门到实战经验给现场观众带来了一次关于ES的干货分享。
三位讲师分别从【入门】:ES优化技巧及工具推荐、【重点】基于父子文档实现的ES关联查询、【实战】亿级规模的ES查询优化实战三个层面对ES进行了介绍。赖鸿智指出自己在2011年就已经接触到ES,对于ES的初学者他从管理及监控两个方面做了一些工具的推荐。
更多精彩内容,下载讲师ppt吧
http://pan.baidu.com/s/1sliR7qP
提取密码:v5p3
收起阅读 »
2016年ES中文社区全国巡回技术沙龙,分别在北京、上海、广州三地召开。【广州站】由ES中文社区和数说故事共同举办,主题为“企业级搜索引擎与大数据实战分享”,共吸引了来自腾讯、网易、欢聚时代、金蝶及舜飞科技等企业的共120+观众到现场交流。来自于欢聚时代的赖鸿智、数说故事的黄耀鸿、塔布数据的何金城三位ES大牛从入门到实战经验给现场观众带来了一次关于ES的干货分享。
三位讲师分别从【入门】:ES优化技巧及工具推荐、【重点】基于父子文档实现的ES关联查询、【实战】亿级规模的ES查询优化实战三个层面对ES进行了介绍。赖鸿智指出自己在2011年就已经接触到ES,对于ES的初学者他从管理及监控两个方面做了一些工具的推荐。
更多精彩内容,下载讲师ppt吧
http://pan.baidu.com/s/1sliR7qP
提取密码:v5p3
收起阅读 »

社区使用WeCenter,一个开源的php+mysql社区问答系统搭建
前言
之前学习Lucene和ElasticSearch的时候经常逛逛Elastic的中文社区,发现社区做的蛮不错的,风格和ui都比较清新,今天突然看到了一个站和其风格类似,我就肯定是个开源的产品二次开发的,后来发现了WeCenter,一个很不错的社区问答系统
简介
WeCenter 是一款知识型的社交化开源社区程序,专注于企业和行业社区内容的整理、归类、检索和再发行。
为什么选择WeCenter
管理中心,一手掌控
管理中心为你建立起快速通路,所有功能开关,只需轻点一下,即可轻松完成配置,如此众多的操控,任你一挥而就
开放源码,便捷开发
WeCenter 含有多项创新功能,遵循 MVC 架构,充分利用当下最新技术,对于开发者来说都会大有帮助,二次开发,更强定制,更易上手
个性路由,个性定制
WeCenter 让你用你喜欢的方式,更灵活地定制 URL 路由,URL 地址不再是千篇一律的样式,在 SEO 优化上祝你一臂之力
设计之妙,上手即知
我们创造的每一件产品,从来都不仅仅追求设计的美观。我们在考虑设计的同时,更希望用户更能容易定制模板,最终我们选择了 Bootstrap,定制模板时你会发现一切都是那么的方便,简易
安装初体验
从官网下载源代码后将UPLOAD放入你的http服务器入目下,开始安装体验之旅
原文地址:http://www.kailing.pub/article ... .html
继续阅读 »
之前学习Lucene和ElasticSearch的时候经常逛逛Elastic的中文社区,发现社区做的蛮不错的,风格和ui都比较清新,今天突然看到了一个站和其风格类似,我就肯定是个开源的产品二次开发的,后来发现了WeCenter,一个很不错的社区问答系统
简介
WeCenter 是一款知识型的社交化开源社区程序,专注于企业和行业社区内容的整理、归类、检索和再发行。
为什么选择WeCenter
管理中心,一手掌控
管理中心为你建立起快速通路,所有功能开关,只需轻点一下,即可轻松完成配置,如此众多的操控,任你一挥而就
开放源码,便捷开发
WeCenter 含有多项创新功能,遵循 MVC 架构,充分利用当下最新技术,对于开发者来说都会大有帮助,二次开发,更强定制,更易上手
个性路由,个性定制
WeCenter 让你用你喜欢的方式,更灵活地定制 URL 路由,URL 地址不再是千篇一律的样式,在 SEO 优化上祝你一臂之力
设计之妙,上手即知
我们创造的每一件产品,从来都不仅仅追求设计的美观。我们在考虑设计的同时,更希望用户更能容易定制模板,最终我们选择了 Bootstrap,定制模板时你会发现一切都是那么的方便,简易
安装初体验
从官网下载源代码后将UPLOAD放入你的http服务器入目下,开始安装体验之旅
原文地址:http://www.kailing.pub/article ... .html
前言
之前学习Lucene和ElasticSearch的时候经常逛逛Elastic的中文社区,发现社区做的蛮不错的,风格和ui都比较清新,今天突然看到了一个站和其风格类似,我就肯定是个开源的产品二次开发的,后来发现了WeCenter,一个很不错的社区问答系统
简介
WeCenter 是一款知识型的社交化开源社区程序,专注于企业和行业社区内容的整理、归类、检索和再发行。
为什么选择WeCenter
管理中心,一手掌控
管理中心为你建立起快速通路,所有功能开关,只需轻点一下,即可轻松完成配置,如此众多的操控,任你一挥而就
开放源码,便捷开发
WeCenter 含有多项创新功能,遵循 MVC 架构,充分利用当下最新技术,对于开发者来说都会大有帮助,二次开发,更强定制,更易上手
个性路由,个性定制
WeCenter 让你用你喜欢的方式,更灵活地定制 URL 路由,URL 地址不再是千篇一律的样式,在 SEO 优化上祝你一臂之力
设计之妙,上手即知
我们创造的每一件产品,从来都不仅仅追求设计的美观。我们在考虑设计的同时,更希望用户更能容易定制模板,最终我们选择了 Bootstrap,定制模板时你会发现一切都是那么的方便,简易
安装初体验
从官网下载源代码后将UPLOAD放入你的http服务器入目下,开始安装体验之旅
原文地址:http://www.kailing.pub/article ... .html 收起阅读 »
之前学习Lucene和ElasticSearch的时候经常逛逛Elastic的中文社区,发现社区做的蛮不错的,风格和ui都比较清新,今天突然看到了一个站和其风格类似,我就肯定是个开源的产品二次开发的,后来发现了WeCenter,一个很不错的社区问答系统
简介
WeCenter 是一款知识型的社交化开源社区程序,专注于企业和行业社区内容的整理、归类、检索和再发行。
为什么选择WeCenter
管理中心,一手掌控
管理中心为你建立起快速通路,所有功能开关,只需轻点一下,即可轻松完成配置,如此众多的操控,任你一挥而就
开放源码,便捷开发
WeCenter 含有多项创新功能,遵循 MVC 架构,充分利用当下最新技术,对于开发者来说都会大有帮助,二次开发,更强定制,更易上手
个性路由,个性定制
WeCenter 让你用你喜欢的方式,更灵活地定制 URL 路由,URL 地址不再是千篇一律的样式,在 SEO 优化上祝你一臂之力
设计之妙,上手即知
我们创造的每一件产品,从来都不仅仅追求设计的美观。我们在考虑设计的同时,更希望用户更能容易定制模板,最终我们选择了 Bootstrap,定制模板时你会发现一切都是那么的方便,简易
安装初体验
从官网下载源代码后将UPLOAD放入你的http服务器入目下,开始安装体验之旅
原文地址:http://www.kailing.pub/article ... .html 收起阅读 »

elasticearch,jdk,maven安装
安装jdk
下载地址
http://www.oracle.com/technetw ... .html
JAVA_HOME : E:\Java\jdk1.7.0
Path : %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
CLASSPATH : .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
首先下载最新的elasticsearch安装版本
https://www.elastic.co/downloads/elasticsearch
安装插件
elasticsearch插件elasticsearch-head安装: plugininstall mobz/elasticsearch-head
elasticsearch插件bigdesk安装:plugininstall lukas-vlcek/bigdesk
前台运行es
在cmd命令行进入安装目录,再进入 bin目录,运行elasticsearch.bat命令: elasticsearch
后台运行es
进入E:\Install_SoftWare\elasticsearch2.2.0\bin
注册服务 service.bat install
内存分配
打开E:\Install_SoftWare\elasticsearch2.2.0\bin\service.bat
或着修改注册表参数
打开regedit
全路径:hkey_local_machine/software/wow6432node/apacheSoftware foundation/procrun2.0/elasticsearch-service-x64/java
启动成功如下图
简单查询
复杂查询
elasticsearch.yml文件配置
cluster.name: pq es名称
node.name: node10 节点名称
node.master: true 设为主节点
node.master: false 不为主节点
node.data: false 不存储数据
node.data:true 存储数据
组合master, data
Master=true, data=false 该节点做为主节点
Master=true, data=true 该节点既是主节点又是数据节点
Master=false, data=true 该节点做为数据节点
Master=false, data= false 该节点做为负载均衡节点
path.data: G:\es_data,F:\es_data 数据存储路径 只有数据节点存储数据
path.logs: D:\es_logs 日志存储路径
bootstrap.mlockall: true 用来锁定内存
network.host: 0.0.0.0 设置ip
http.port: 9200 设置http端口
transport.tcp.port: 9300 设置tcp端口
discovery.zen.ping.unicast.hosts:["0.0.*.*","*.*.*.*:9300"]设置群集ip地址
分词安装(IK分词)
Maven环境配置
官方下载地址:http://maven.apache.org/download.html
https://github.com/medcl/elasticsearch-analysis-ik下载地址
把下载的elasticsearch-analysis-ik.zip 解压。
Maven 打包
进入elasticsearch-analysis-ik-master/ 下,打包。注意:打包后的文件在elasticsearch-analysis-ik-master/target/目录下
然后在elasticsearch-2.2.0/plugins下创建目录 ik
然后将打包后的elasticsearch-analysis-ik-1.8.0.jar 放入当前目录下
Maven 打包命令 mvn clean package
在 Elasticsearch 的config下的elasticsearch.yml文件中,添加如下代码。 设置(2.0以上可以不设置)。1. index: 2. analysis: 3. analyzer: 4. ik: 5. alias: [ik_analyzer] 6. type:org.elasticsearch.index.analysis.IkAnalyzerProvider 7. ik_max_word: 8. type: ik 9. use_smart: false 10. ik_smart: 11. type: ik 12. use_smart: true或者简单配置:index.analysis.analyzer.ik.type : “ik”
分词测试
http://127.0.0.0:9215/index/_a ... true/
post
{"text":"刑事判决书"}、
详细ik分词配置网址
http://www.sojson.com/blog/82
安装jdk
下载地址
http://www.oracle.com/technetw ... .html
JAVA_HOME : E:\Java\jdk1.7.0
Path : %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
CLASSPATH : .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
首先下载最新的elasticsearch安装版本
https://www.elastic.co/downloads/elasticsearch
安装插件
elasticsearch插件elasticsearch-head安装: plugininstall mobz/elasticsearch-head
elasticsearch插件bigdesk安装:plugininstall lukas-vlcek/bigdesk
前台运行es
在cmd命令行进入安装目录,再进入 bin目录,运行elasticsearch.bat命令: elasticsearch
后台运行es
进入E:\Install_SoftWare\elasticsearch2.2.0\bin
注册服务 service.bat install
内存分配
打开E:\Install_SoftWare\elasticsearch2.2.0\bin\service.bat
或着修改注册表参数
打开regedit
全路径:hkey_local_machine/software/wow6432node/apacheSoftware foundation/procrun2.0/elasticsearch-service-x64/java
启动成功如下图
简单查询
复杂查询
elasticsearch.yml文件配置
cluster.name: pq es名称
node.name: node10 节点名称
node.master: true 设为主节点
node.master: false 不为主节点
node.data: false 不存储数据
node.data:true 存储数据
组合master, data
Master=true, data=false 该节点做为主节点
Master=true, data=true 该节点既是主节点又是数据节点
Master=false, data=true 该节点做为数据节点
Master=false, data= false 该节点做为负载均衡节点
path.data: G:\es_data,F:\es_data 数据存储路径 只有数据节点存储数据
path.logs: D:\es_logs 日志存储路径
bootstrap.mlockall: true 用来锁定内存
network.host: 0.0.0.0 设置ip
http.port: 9200 设置http端口
transport.tcp.port: 9300 设置tcp端口
discovery.zen.ping.unicast.hosts:["0.0.*.*","*.*.*.*:9300"]设置群集ip地址
分词安装(IK分词)
Maven环境配置
官方下载地址:http://maven.apache.org/download.html
https://github.com/medcl/elasticsearch-analysis-ik下载地址
把下载的elasticsearch-analysis-ik.zip 解压。
Maven 打包
进入elasticsearch-analysis-ik-master/ 下,打包。注意:打包后的文件在elasticsearch-analysis-ik-master/target/目录下
然后在elasticsearch-2.2.0/plugins下创建目录 ik
然后将打包后的elasticsearch-analysis-ik-1.8.0.jar 放入当前目录下
Maven 打包命令 mvn clean package
在 Elasticsearch 的config下的elasticsearch.yml文件中,添加如下代码。 设置(2.0以上可以不设置)。1. index: 2. analysis: 3. analyzer: 4. ik: 5. alias: [ik_analyzer] 6. type:org.elasticsearch.index.analysis.IkAnalyzerProvider 7. ik_max_word: 8. type: ik 9. use_smart: false 10. ik_smart: 11. type: ik 12. use_smart: true或者简单配置:index.analysis.analyzer.ik.type : “ik”
分词测试
http://127.0.0.0:9215/index/_a ... true/
post
{"text":"刑事判决书"}、
详细ik分词配置网址
http://www.sojson.com/blog/82 收起阅读 »

elasticsearch读取多个redis值
input{
redis{
host => "192.168.80.50"
port => 6379
password => "xxx"
data_type => "list"
key => "logstash-ljk-screen"
codec => json
type=>"ljkscreen"
}
redis{
host => "192.168.80.50"
port => 6379
password => "xxx"
data_type => "list"
key => "logstash-kg-media"
codec => json
type=>"kgmedia"
}
}
继续阅读 »
redis{
host => "192.168.80.50"
port => 6379
password => "xxx"
data_type => "list"
key => "logstash-ljk-screen"
codec => json
type=>"ljkscreen"
}
redis{
host => "192.168.80.50"
port => 6379
password => "xxx"
data_type => "list"
key => "logstash-kg-media"
codec => json
type=>"kgmedia"
}
}
input{
redis{
host => "192.168.80.50"
port => 6379
password => "xxx"
data_type => "list"
key => "logstash-ljk-screen"
codec => json
type=>"ljkscreen"
}
redis{
host => "192.168.80.50"
port => 6379
password => "xxx"
data_type => "list"
key => "logstash-kg-media"
codec => json
type=>"kgmedia"
}
} 收起阅读 »
redis{
host => "192.168.80.50"
port => 6379
password => "xxx"
data_type => "list"
key => "logstash-ljk-screen"
codec => json
type=>"ljkscreen"
}
redis{
host => "192.168.80.50"
port => 6379
password => "xxx"
data_type => "list"
key => "logstash-kg-media"
codec => json
type=>"kgmedia"
}
} 收起阅读 »
david 发表于 : 2016-04-19 15:45
评论 (0)

首届ES中文社区技术沙龙【广州站】—企业级搜索引擎与大数据实战分享
从2015年后,大数据被认为是驱动企业变革的推动剂,为经济创新带来新的增量。ElasticSearch(下文简称ES)是当前流行的企业级搜索引擎,它提供了一个分布式多用户能力的全文搜索引擎。简言之,大数据时代ES能够提供简单易用的方式帮助企业从大型数据库中快速提取有效信息进行分析。
2016年首届ES中文社区全国巡回技术沙龙在北京、上海、广州三地召开。ES中文社区携手数说故事共同主办 ElasticSearch技术沙龙-广州站,诚邀您参加交流。
4月23日14:00 - 17:30,广州筑梦咖啡,我们不见不散。
沙龙详情:
1、主办方:
ElasticSearch中文社区 数说故事
2、时间与地点:
4月23日14:00 - 17:30(周六)
广州筑梦咖啡(广州天河区黄埔大道中309号羊城创意产业园(近骏景花园)
沙龙主题:
ElasticSearch技术沙龙—企业级搜索引擎实战与案例分享
分享一:你不得不知道的ES的使用经验及优化技巧
赖鸿智
欢聚时代搜索工程师,负责欢聚时代搜索服务
主题简介:
ES使用中掉过的坑以及优化技巧,主要包括:搜索平台的架构,实时大数据分析平台的架构。
分享二: 基于父子文档实现的ES关联查询
黄耀鸿
数说故事技术总监,多年大数据开发经验
主题简介:
为你解答在千万级用户和发布的亿级文章内容中,如何利用父子文档,通过一对多的关联查询,实现对内容搜索,对用户分析的场景。
分享三:ES实战现场:亿级规模的ES查询优化实战
何金城
塔布高级数据项目经理
主题简介:
在传统家电企业的DMP系统实施实战中ES的一些使用情况及查询优化实践。
活动流程:
14:00-14:30 签到及入场
14:30-14:40 主持人介绍活动
14:40-15:20 赖鸿智 Elasticsearch的一些使用经验及优化技巧
15:20-16:00 黄耀鸿 基于父子文档实现的ES关联查询
16:00-16:40 何金城 亿级规模的ES查询优化实战
16:40-17:10 提问交流 可获精美礼品
17:10-17:30 自由沟通
哪些惊喜:
企业级搜索引擎全程干货的分享
免费领取由ElasticSearch中文社区提供的限量版礼品
有机会参观大数据公司【数说故事】,近距离了解大数据工作流程
报名方式:
本次活动全程免费,欢迎报名
报名入口:活动行
活动联系:
联系人:陈小姐
手机:13660037521
邮箱:625802461@qq.com
更多活动详情扫描二维码关注数说故事
(公众号:datastory2015)
继续阅读 »
2016年首届ES中文社区全国巡回技术沙龙在北京、上海、广州三地召开。ES中文社区携手数说故事共同主办 ElasticSearch技术沙龙-广州站,诚邀您参加交流。
4月23日14:00 - 17:30,广州筑梦咖啡,我们不见不散。
沙龙详情:
1、主办方:
ElasticSearch中文社区 数说故事
2、时间与地点:
4月23日14:00 - 17:30(周六)
广州筑梦咖啡(广州天河区黄埔大道中309号羊城创意产业园(近骏景花园)
沙龙主题:
ElasticSearch技术沙龙—企业级搜索引擎实战与案例分享
分享一:你不得不知道的ES的使用经验及优化技巧
赖鸿智
欢聚时代搜索工程师,负责欢聚时代搜索服务
主题简介:
ES使用中掉过的坑以及优化技巧,主要包括:搜索平台的架构,实时大数据分析平台的架构。
分享二: 基于父子文档实现的ES关联查询
黄耀鸿
数说故事技术总监,多年大数据开发经验
主题简介:
为你解答在千万级用户和发布的亿级文章内容中,如何利用父子文档,通过一对多的关联查询,实现对内容搜索,对用户分析的场景。
分享三:ES实战现场:亿级规模的ES查询优化实战
何金城
塔布高级数据项目经理
主题简介:
在传统家电企业的DMP系统实施实战中ES的一些使用情况及查询优化实践。
活动流程:
14:00-14:30 签到及入场
14:30-14:40 主持人介绍活动
14:40-15:20 赖鸿智 Elasticsearch的一些使用经验及优化技巧
15:20-16:00 黄耀鸿 基于父子文档实现的ES关联查询
16:00-16:40 何金城 亿级规模的ES查询优化实战
16:40-17:10 提问交流 可获精美礼品
17:10-17:30 自由沟通
哪些惊喜:
企业级搜索引擎全程干货的分享
免费领取由ElasticSearch中文社区提供的限量版礼品
有机会参观大数据公司【数说故事】,近距离了解大数据工作流程
报名方式:
本次活动全程免费,欢迎报名
报名入口:活动行
活动联系:
联系人:陈小姐
手机:13660037521
邮箱:625802461@qq.com
更多活动详情扫描二维码关注数说故事
(公众号:datastory2015)
从2015年后,大数据被认为是驱动企业变革的推动剂,为经济创新带来新的增量。ElasticSearch(下文简称ES)是当前流行的企业级搜索引擎,它提供了一个分布式多用户能力的全文搜索引擎。简言之,大数据时代ES能够提供简单易用的方式帮助企业从大型数据库中快速提取有效信息进行分析。
2016年首届ES中文社区全国巡回技术沙龙在北京、上海、广州三地召开。ES中文社区携手数说故事共同主办 ElasticSearch技术沙龙-广州站,诚邀您参加交流。
4月23日14:00 - 17:30,广州筑梦咖啡,我们不见不散。
沙龙详情:
1、主办方:
ElasticSearch中文社区 数说故事
2、时间与地点:
4月23日14:00 - 17:30(周六)
广州筑梦咖啡(广州天河区黄埔大道中309号羊城创意产业园(近骏景花园)
沙龙主题:
ElasticSearch技术沙龙—企业级搜索引擎实战与案例分享
分享一:你不得不知道的ES的使用经验及优化技巧
赖鸿智
欢聚时代搜索工程师,负责欢聚时代搜索服务
主题简介:
ES使用中掉过的坑以及优化技巧,主要包括:搜索平台的架构,实时大数据分析平台的架构。
分享二: 基于父子文档实现的ES关联查询
黄耀鸿
数说故事技术总监,多年大数据开发经验
主题简介:
为你解答在千万级用户和发布的亿级文章内容中,如何利用父子文档,通过一对多的关联查询,实现对内容搜索,对用户分析的场景。
分享三:ES实战现场:亿级规模的ES查询优化实战
何金城
塔布高级数据项目经理
主题简介:
在传统家电企业的DMP系统实施实战中ES的一些使用情况及查询优化实践。
活动流程:
14:00-14:30 签到及入场
14:30-14:40 主持人介绍活动
14:40-15:20 赖鸿智 Elasticsearch的一些使用经验及优化技巧
15:20-16:00 黄耀鸿 基于父子文档实现的ES关联查询
16:00-16:40 何金城 亿级规模的ES查询优化实战
16:40-17:10 提问交流 可获精美礼品
17:10-17:30 自由沟通
哪些惊喜:
企业级搜索引擎全程干货的分享
免费领取由ElasticSearch中文社区提供的限量版礼品
有机会参观大数据公司【数说故事】,近距离了解大数据工作流程
报名方式:
本次活动全程免费,欢迎报名
报名入口:活动行
活动联系:
联系人:陈小姐
手机:13660037521
邮箱:625802461@qq.com
更多活动详情扫描二维码关注数说故事
(公众号:datastory2015) 收起阅读 »
2016年首届ES中文社区全国巡回技术沙龙在北京、上海、广州三地召开。ES中文社区携手数说故事共同主办 ElasticSearch技术沙龙-广州站,诚邀您参加交流。
4月23日14:00 - 17:30,广州筑梦咖啡,我们不见不散。
沙龙详情:
1、主办方:
ElasticSearch中文社区 数说故事
2、时间与地点:
4月23日14:00 - 17:30(周六)
广州筑梦咖啡(广州天河区黄埔大道中309号羊城创意产业园(近骏景花园)
沙龙主题:
ElasticSearch技术沙龙—企业级搜索引擎实战与案例分享
分享一:你不得不知道的ES的使用经验及优化技巧
赖鸿智
欢聚时代搜索工程师,负责欢聚时代搜索服务
主题简介:
ES使用中掉过的坑以及优化技巧,主要包括:搜索平台的架构,实时大数据分析平台的架构。
分享二: 基于父子文档实现的ES关联查询
黄耀鸿
数说故事技术总监,多年大数据开发经验
主题简介:
为你解答在千万级用户和发布的亿级文章内容中,如何利用父子文档,通过一对多的关联查询,实现对内容搜索,对用户分析的场景。
分享三:ES实战现场:亿级规模的ES查询优化实战
何金城
塔布高级数据项目经理
主题简介:
在传统家电企业的DMP系统实施实战中ES的一些使用情况及查询优化实践。
活动流程:
14:00-14:30 签到及入场
14:30-14:40 主持人介绍活动
14:40-15:20 赖鸿智 Elasticsearch的一些使用经验及优化技巧
15:20-16:00 黄耀鸿 基于父子文档实现的ES关联查询
16:00-16:40 何金城 亿级规模的ES查询优化实战
16:40-17:10 提问交流 可获精美礼品
17:10-17:30 自由沟通
哪些惊喜:
企业级搜索引擎全程干货的分享
免费领取由ElasticSearch中文社区提供的限量版礼品
有机会参观大数据公司【数说故事】,近距离了解大数据工作流程
报名方式:
本次活动全程免费,欢迎报名
报名入口:活动行
活动联系:
联系人:陈小姐
手机:13660037521
邮箱:625802461@qq.com
更多活动详情扫描二维码关注数说故事
(公众号:datastory2015) 收起阅读 »