在elasticsearch里如何高效的使用filter [性能优化必看]

这里有一篇很好的文章,很不错,翻译和整理了一下,英文不错的,建议直接看原文:http://euphonious-intuition.com/2013/05/all-about-elasticsearch-filter-bitsets/ elasticsearch里面有BOOL filter、AND、OR、NOT filter,这几个看起来很相似,都有什么区别呢?什么时候用bool filter?什么时候用AND filter呢? 事实上,bool filter和AND 、OR、NOT filter 是完全不同,在查询性能上面的影响是非常大的。

elasticsearch插件bug fix

lucene4变化不少:http://blog.mikemccandless.com/2012/07/lucene-400-alpha-at-long-last.html 自定义的analyzer的要求也更加严格,之前写的几个插件,都报错了。 错误具体表现在第一次分词没有问题,第二次及后续的分词都是空,感谢各位网友的积极响应和测试反馈,谢谢。 具体是什么原因呢? 仔细研究了下代码,发现reset多加了一个参数,汗,fix如下: –    public void reset(Reader input) throws IOException { +    public void reset() throws IOException {   受影响的插件:pinyin、string2int、stconvert 这次都是按jdk6重新编译的,上次反映的jdk7的问题也一并解决了。  

发布个插件:elasticsearch-river-email

最近发现vps上面跑的用来收邮件的python脚本占用了30%的cpu,并且一直就有写个邮件river的想法,不过一直没有付诸行动,今天下班抽空完成了这个插件,理论支持的协议: /** now support: imap imaps pop3s pop3 */ 不过只有时间测试了pop3协议,正常收取。 地址:https://github.com/medcl/elasticsearch-river-email 创建river的方式:

RTF已经包含该插件,并测试通过: https://github.com/medcl/elasticsearch-rtf/tree/master/elasticsearch/plugins/river-email

mongodb-river重新同步数据

elasticsearch的mongodb-river没有提供对一个库重新同步数据的方法,在很多情况下我们需要这么做,比如修改了elasticsearch的mapping,这个时候,就只能重建数据,所以需要重新从mongodb里面pull数据,然后重建索引,怎么办? 其实我们只需要清除mongodb-river记录的同步信息就行了,然后mongodb就能自动重新初始化,就跟新安装的一样。 1.第一步,查看那些信息需要删除,所有的信息都在_river索引里面

返回结果,类似这样的,就是记录数据同步的位置信息了

怎么处理呢?干掉就行,这个记录其实也就是一条elasticsearch的索引文档数据,找到index,type,id删除就行了。 我这里全部删除了,你可别照着来

第二步,目标索引如果需要修改mapping,删除数据,等等 第三步,重新创建river配置信息,啥,没有备份,慢慢哭去吧 到这里,数据应该就可以马上看到了,速度非常快。

How ElasticSearch Tried to Scaling Lucene

拖拖拉拉,终于完成了。 介绍了elasticsearch核心的几个分布式设计概念,对于了解elasticsearch非常有用。 这部分内容是lukas-vlcek 根据shay 的slide Road to a Distributed Search Engine 整理的。 我翻译了下。 链接在此: http://www.elasticsearch.cn/guide/concepts/scaling-lucene/ Scaling Lucene Building Blocks Partitioning Replication Transaction Log