elasticsearch的准实时(near real-time)查询
来源:互联网 发布:淘宝女士太阳镜 编辑:程序博客网 时间:2024/05/16 19:05
elasticsearch是基于lucene的,lucene是可以做到实时的,就是创建索引之后,立即能查询到。
但是这样,要么是牺牲索引的效率,每次都索引之后都刷新,要么就是牺牲查询的效率每次查询之前都进行刷新。
索引之后进行刷新是通过:
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();进行搜索前进行刷新
elasticClient.admin().indices().refresh(new RefreshRequest("indexName"));无论哪一种,都会让你的性能下降10倍以上,所以只能采取一种折中的方案,每隔n秒自动刷新,这样你创建索引之后,最多在ns之内肯定能查到。
这就是所谓的准实时(near real-time)查询。
构建客户端的时候设置
Settings settings = ImmutableSettings.settingsBuilder() .put("client.transport.sniff", true) .put("index.refresh_interval", "1s") .put("cluster.name","elasticsearch") .build(); TransportClient client = new TransportClient(settings);
注意:上面这些写法是elasticsearch5.x以前的版本。
Elasctisearch5.x实现方式如下:
①索引之后立刻更新实现:.setRefreshPolicy(RefreshPolicy.IMMEDIATE)
String index = "wareic-bak";String type = "product";String productId = "4";String data = "{\"categoryID\":1,\"categorySubID\":\"3\"}";IndexResponse response = client.prepareIndex(index,type,productId).setSource(data).setRefreshPolicy(RefreshPolicy.IMMEDIATE).get();
curl -XPUT 'http://localhost:9200/wareic_bak/_settings?preserve_existing=true' -d '{ "index.refresh_interval" : "100s"}'
若是已经设置过refresh_interval,想再修改refresh_interval使用如下方式
curl -XPUT 'http://localhost:9200/wareic_bak/_settings' -d '{ "index.refresh_interval" : "100s"}'
文章来源:http://zhaoyanblog.com/archives/299.html
阅读全文
0 0
- elasticsearch的准实时(near real-time)查询
- elasticsearch的准实时(near real-time)查询
- Lucene -- 准实时搜索Near Real Time
- 一步一步跟我学习lucene(19)---lucene增量更新和NRT(near-real-time)Query近实时查询
- 关于DG配置备库无法Real-Time Apply,无法实时查询的一个案例
- 体验一下Oracle 11g物理Active Data Guard实时查询(Real-time query)
- 【DataGuard】Oracle 11g物理Active Data Guard实时查询(Real-time query)特性
- 【DataGuard】Oracle 11g物理Active Data Guard实时查询(Real-time query)特性
- Linux real-time signal (实时信号)
- 实时Recurrent学习Real Time Recurrent Learning
- 实时以太网RTE(Real Time Ethernet)
- Simulink实时仿真--Desktop Real-Time
- 微软的RTC(Real Time Communication实时通信)的小应用
- 基于轮廓线索的实时人体检测 Real-Time Human Detection Using Contour Cues
- PAUL VIOLA 鲁棒的实时人脸检测:Robust Real-Time Face Detection
- 鲁棒的实时人脸检测:Robust Real-Time Face Detection
- 11gR2 DataGuard standby开启实时查询(Real-time query)备份standby恢复报错:ORA-01194 ORA-01110
- New Apache project will Drill big data in near real time
- Kotlinで初め
- JQuery——Ajax之XMLHTTPRequest对象
- android 友盟QQ分享
- java mysql 高性能批量处理 设置rewriteBatchedStatements
- Java byte数组转16进制字符串
- elasticsearch的准实时(near real-time)查询
- mouseover mouseout mouseenter mouseleave解释
- 很抱歉 程序无法在非mbr引导的分区上激活
- JSP 界面sql语句执行
- iOS NSDictionary JSON 相互转换
- C#去读不同版本的excel文件
- Haar小波变换的推演说明
- 基于jdbc 通用的增删改查
- Oracle中的where部分的各个条件的执行顺序(右->左)