设为首页 收藏本站
查看: 1107|回复: 0

[经验分享] ElasticSearch入门之风花雪月(五)

[复制链接]

尚未签到

发表于 2017-5-21 08:28:47 | 显示全部楼层 |阅读模式
DSC0000.jpg
以前经常有人问散仙,如何学好搜索? 其实这个问题很具有代表性,你可以归纳为一类问题? 其实,散仙在以前博客的中,也有总结过,大家可以点击这个链接再看一下。
本篇散仙要介绍的内容,是关于如何用Luke查看ElasticSearch的索引,那么为什么会写如此一篇文章呢?
相信学过或了解过全文检索的朋友们,都知道,搜索的核心的就是倒排索引,之所以我们能够使用Google在互联网的海量的数据中,通过关键词快速定位到我们想要的数据,就是因为倒排索引在这里起了非常大的作用,在搜索中索引通常是不可见的,我们只知道能通过搜索某些关键词找到我们想要的信息,而并不知道,在倒排索引中,他们所有的倒排词是什么样的,这也就是很多时候,我们经常会很奇怪,为什么我搜索的这个词没有返回结果呢?
如果没有返回结果,基本能够证明它在索引中,是不存在的,或者有时候,我们搜索了中国人,能够搜索数据,但是如果搜索中国,却搜不到数据? 这一切都跟倒排有关? 如果我们出现上面的一些问题,那么该怎么办呢?

DSC0001.png
莫慌,如果对分词很了解的朋友们,基本上都很够找到原因,因为索引里面的数据,是需要经过分词,然后在索引的,其实就是把一篇文章,切成不同的token也称(term),检索的关键词只要和这些token匹配,基本就能搜索到数据,当然这是很复杂的流程,在Lucene里,要经过语法树分析,优化,查询,评分,排序等。
ElasticSearch虽然也是构建与Lucene之上,但是ElasticSearch却重写了自己独有的倒排表存取解析格式,所以直接使用Luke来打开elasticSearch的索引,是不会成功的。
而Solr在这一方面就表现的非常好,完全兼容Lucene,他们的索引互相之间可以共用,从这一方面来讲,Apache Solr应该是正统的Lucene的系的企业级搜索框架,而ElasticSearch由于改写的内容比较多,所以与原始的Lucene偏差相对较大,不过它仍然是基于Lucene构建的一款优秀的全文检索框架。

回答文章开始提出的问题,如果在检索的某些词的时候,没有返回任何数据,此时我们就可以使用luke来打开所以查看,倒排表的索引数据。
下面,看下如何编译打包支持ElasticSearch的Luke:
(1)在GigHub上,check出luke的源码
(2)修改此项目的pom文件,添加elasticsearch支持:

   <!-- ElasticSearch -->
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>1.4.4</version>
</dependency>
3,执行mvn package命令,打包jar,执行完成后会在target目录下生成一个luke-with-deps.jar的文件
4,解压此jar包,将luke-with-deps.jar\META-INF\services下的org.apache.lucene.codecs.PostingsFormat文件打开,在文件的末尾,添加如下三行elasticsearch的索引格式读写的类全名

org.apache.lucene.codecs.lucene40.Lucene40PostingsFormat
org.apache.lucene.codecs.lucene41.Lucene41PostingsFormat
org.elasticsearch.index.codec.postingsformat.BloomFilterPostingsFormat
org.elasticsearch.index.codec.postingsformat.Elasticsearch090PostingsFormat
org.elasticsearch.search.suggest.completion.Completion090PostingsFormat
5,添加完成后,再次放入压缩包中,然后在命令行执行java -jar luke-with-deps.jar 即可打开Luke,然后我们就可以在界面选择elasticsearc的索引,进行查看了。
注意一点,当索引为空的时候,luke会报一个异常:
There are no postings in the index reader的异常,这并不影响luke的正常使用,大家可以直接忽略!
不想自己打包jar的朋友们,可以在微信公众号里留言,散仙会发到大家邮箱里的,iteye这里有限制,jar包比较大,超出了范围,所以在这里上传不了,请大家谅解
DSC0002.jpg

参考资料:
https://simpsora.wordpress.com/2014/05/06/using-luke-with-elasticsearch/
http://youku.io/questions/429202/elasticsearch-and-luke
http://lingpipe-blog.com/2012/07/24/using-luke-the-lucene-index-browser-to-develop-search-queries/



想了解更多有关电商互联网公司的搜索技术和大数据技术的使用,请欢迎扫码关注微信公众号:我是攻城师(woshigcs)
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园,有什么问题随时都可以留言,欢迎大家来访!


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-379465-1-1.html 上篇帖子: elasticsearch java API------批量添加索引 下篇帖子: ElasticSearch警报和通知产品 Watcher功能介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表