elasticsearch Index Search的理解


 
Analyzer,在Lucene中是一个分词器的概念,我们知道Es是建立在Lucene之上的,所以这里的Analzyer同样的也适用,Mapping 中的Analyzer主在是指定字段采用什么分词器,具体的程序和配置分词在插件和配置都有过一些说明。 
 
Analyzer在Es中分为index_analyzer和search_analyzer 
 
Index_analzyer:指的是索引过程中采用的分词器 
 
Search_analyzer:指的是检索过程中采用的分词器 
 
我们知道index和search是两个过程,但是尽量保证这两个过程和分词方式一致这样可以保证查全和查准,否则再牛B的分词,index和search采用的不相同也是无用功。 
 
         与analyzer与之相关的就是别外一项index项 
 
"HC":{ "type":"string", "index":"no", "store":"no"} 
 
         Index表示该字段是否索引,如果index为no那个analyzer设为啥也没用。 
 
最 后是”store”项了store项表示该项是否存储到倒索索引中去,并不是_source,当项mapping中还有很多可以设置和优化的地方,会面在 慢慢讨论。在mapping中index和store如果大家有时候觉得有点和source搞不清楚,大家可以参考lucene中的 Field.Store.YES,Field.Index.NOT_ANALYZED,Field.Index等相关设置就比较明白了。 
 
----------------------------------------------- 
云计算平台(检索篇)-Elasticsearch-索引优化篇 
 
         ES索引优化篇主要从两个方面解决问题,一是索引数据过程;二是检索过程。 
 
索 引数据过程我在上面几篇文章中有提到怎么创建索引和导入数据,但是大家可能会遇到索引数据比较慢的过程。其实明白索引的原理就可以有针对性的进行优化。 ES索引的过程到相对Lucene的索引过程多了分布式数据的扩展,而这ES主要是用tranlog进行各节点之间的数据平衡。所以从上我可以通过索引的 settings进行第一优化: 
 
         "index.translog.flush_threshold_ops": "100000" 
 
         "index.refresh_interval": "-1", 
 
         这两个参数第一是到tranlog数据达到多少条进行平衡,默认为5000,而这个过程相对而言是比较浪费时间和资源的。所以我们可以将这个值调大一些还 是设为-1关闭,进而手动进行tranlog平衡。第二参数是刷新频率,默认为120s是指索引在生命周期内定时刷新,一但有数据进来能refresh像 lucene里面commit,我们知道当数据addDoucment会,还不能检索到要commit之后才能行数据的检索所以可以将其关闭,在最初索引 完后手动refresh一之,然后将索引setting里面的index.refresh_interval参数按需求进行修改,从而可以提高索引过程效 率。 
 
         另外的知道ES索引过程中如果有副本存在,数据也会马上同步到副本中去。我个人建议在索引过程中将副本数设为0,待索引完成后将副本数按需量改回来,这样也可以提高索引效率。 
 
         "number_of_replicas": 0 
 

         上面聊了一次索引过程的优化之后,我们再来聊一下检索速度比较慢的问题,其实检索速度快度与索引质量有很大的关系。而索引质量的好坏与很多因素有关。


http://www.cnblogs.com/zhangchenliang/p/4186702.html

转载于:https://my.oschina.net/TOW/blog/521460

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值