elasticsearch的准实时(near real-time)查询
2015-06-15 00:00
120 查看
elasticsearch是基于lucene的,lucene是可以做到实时的,就是创建索引之后,立即能查询到。
但是这样,要么是牺牲索引的效率,每次都索引之后都刷新,要么就是牺牲查询的效率每次查询之前都进行刷新。
索引之后进行刷新是通过:
进行搜索前进行刷新
无论哪一种,都会让你的性能下降10倍以上,所以只能采取一种折中的方案,每隔n秒自动刷新,这样你创建索引之后,最多在ns之内肯定能查到。
这就是所谓的准实时(near real-time)查询。
构建客户端的时候设置
但是这样,要么是牺牲索引的效率,每次都索引之后都刷新,要么就是牺牲查询的效率每次查询之前都进行刷新。
索引之后进行刷新是通过:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | elasticClient.prepareIndex("indexName", "Person") .setSource( XContentFactory.jsonBuilder() .startObject() .field("name", "zhangsan") .field("desc", "you are good chaoji good") .field("age", 18) .field("height", 256789l) .field("sex", "M") .field("bool", true) .field("double", 33.6f) .field("date", new Date(16554755464l)) .endObject()) .setRefresh(true) .execute().actionGet(); |
1 | elasticClient.admin().indices().refresh(new RefreshRequest("indexName")); |
这就是所谓的准实时(near real-time)查询。
构建客户端的时候设置
1 2 3 4 5 6 7 | Settings settings = ImmutableSettings.settingsBuilder() .put("client.transport.sniff", true) .put("index.refresh_interval", "1s") .put("cluster.name","elasticsearch") .build(); TransportClient client = new TransportClient(settings); |
相关文章推荐
- elasticsearch三个重要的优化
- hadoop中的一次集群任务执行超时问题查找过程
- mysql 多表查询
- python csv学习
- Oracle Job 定时任务执行Sql
- ADT转AndroidStudio建议
- Linux下多线程查看工具(pstree、ps、pstack)
- linux 添加静态路由
- Badboy脚本录制
- Badboy录制脚本出现的问题
- docker基本操作
- linux 打包
- go_1
- 通过全局变量和监听来实现夜间模式
- mysql 字符串转整形
- [转] 如何高效的阅读hadoop源代码?
- Hibernate 级联属性
- Spring day01(1)
- Spring day01(2)
- Spring day01(3)