elasticsearch的准实时(near real-time)查询
2016-04-08 15:46
423 查看
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)查询。
构建客户端的时候设置
12 | Settings settings = ImmutableSettings.settingsBuilder() .put("client.transport.sniff", true) .put("index.refresh_interval", "1s") .put("cluster.name","elasticsearch") .build(); TransportClient client = new TransportClient(settings); |
相关文章推荐
- 正则表达式
- 用户点击获取验证码之后我们会发送一条信息到用户手机,然后就会出现一个倒计时按钮,很像支付宝手机付款效果了,下面我给大家分享两个js效果
- 充分理解数组的含义:各种数组方法的使用
- 自定义UICollectionViewLayout(二) ----StackLayout&CircleLayout
- geotrellis使用初探
- mouse_driver
- SpringMVC上传多文件
- 【LeetCode-135】Candy
- 参数返回错误情况
- jmeter在手机app性能测试中的应用
- http请求设置setConnectTimeout()方法超时无响应
- Unicode中文区间
- 【一天一道LeetCode】#13. Roman to Integer
- ToolBar控件去除默认的左边距
- 【一天一道LeetCode】#13. Roman to Integer
- Apple Pay接入
- 由微信群中的一道小问题引发的同余方程计算机解法
- 对Django框架架构和Request/Response处理流程的分析 | 疯狂的蚂蚁
- gcc指定头文件路径及动态链接库路径
- DSHTTPService