设为首页 收藏本站
云服务器等爆品抢先购,低至4.2元/月
查看: 1244|回复: 0

[经验分享] ElasticSearch入门之花落红尘(三)

[复制链接]

尚未签到

发表于 2017-5-21 06:14:27 | 显示全部楼层 |阅读模式
上篇文章散仙介绍了ElasticSearch的入门安装和使用,那么本篇我们来看下,如何使用java api来和ElasticSearch进行交互,简单点说,就是实现一个增删改查,来找找入门的感觉。
在这里散仙解释一下,为啥选择使用Java api来作为一个入门的例子,主要原因如下:
(1)Java在大中小型企业级应用非常广泛,而且ES本身就是包装了使用java编写的Apache Lucene。
(2)基于java的api能和其他很多基于hadoop生态系统的开源框架对接,如Hbase,Hive,Pig等。
(3)学习资料比较丰富,降低了入门门槛。

当然散仙在这里并不是来夸赞JAVA如何牛逼,而是以一个方便于大家快速学习和入门着想的,ES的最大特点就是提供了一个轻量级的RESTful的接口来对接各种编程语言,你可以使用python,php,JavaScript,ruby,C#等等任何语言来对ES进行操作和管理,甚至你也可以使用shell+curl来搞定这件事情。

本篇,散仙给出一个最简单的使用java api操作ES的小例子,后面文章,散仙会继续分享关于ES更多的文章,在这之前,还是想请大家注意ES的服务在启动之后,会提供2个端口来供外部使用,一个是9300基于给java程序使用的端口,另一个是9200供其他编程语言调用,以及等一些插件的访问也会使用此端口,在编写程序时,切记不能写错。

package com.test;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.index.get.GetField;
import com.google.gson.Gson;
/**
* 使用java api 操作elasticsearch索引,包含了基本的增删改查
* @author qindongliang
* 欢迎大家加入下面的技术交流群(广告勿入),一起探讨交流,
* 另外也可关注我们的公众号:我是攻城师(woshigcs)
* 搜索技术交流群:324714439
* 大数据技术交流群:376932160
* **/
public class ESCommon {
//es的客户端实例
Client client=null;
{
//连接单台机器,注意ip和端口号,不能写错
client=new TransportClient().
addTransportAddress(new InetSocketTransportAddress("192.168.46.23", 9300));
}
public static void main(String[] args)throws Exception {
ESCommon es=new ESCommon();
//es.updatedoc();
//es.getone();
//es.deleteOne();
es.indexOne();
}
/**
* delete one data
*
* **/
public void deleteOne(){
try{
DeleteResponse de=client.prepareDelete("database", "table", "2").execute().actionGet();
if(!de.isFound()){
System.out.println("词条数据不存在!");
}
System.out.println("删除成功!");
}catch(Exception e){
e.printStackTrace();
}
}
/**
* index one data
* **/
public void updatedoc()throws Exception{
UpdateRequest ur=new UpdateRequest();
ur.index("database");
ur.type("table");
ur.id("1");
Map<String, Object> data = new HashMap<String, Object>();
data.put("user","更新的用户");
data.put("message","我也要更新了呀");
ur.doc(data);
client.update(ur);
System.out.println("更新成功!");
}
/**
* get one data
* **/
public void getone()throws Exception{
GetResponse response = client.prepareGet("database", "table", "22")
.execute()
.actionGet();
if(!response.isExists()){
System.out.println("数据不存在! ");
return;
}
Map<String, Object> source = response.getSource();
for(Entry<String, Object> eo:source.entrySet()){
System.out.println(eo.getKey()+"  "+eo.getValue());
}
Map<String, GetField> fields = response.getFields();
if(fields!=null){
for(Entry<String, GetField> s:fields.entrySet()){
System.out.println(s.getKey());
}
}else{
System.out.println("fields is null;");
}
client.close();
}

/**
* index one data
*
* **/
public void indexOne()throws Exception{
Map<String, Object> data = new HashMap<String, Object>();
data.put("user","kimchy");
data.put("postDate",new Date());
data.put("message","trying out Elasticsearch");
Gson g=new Gson();
String json=g.toJson(data);
//得到一个json串
IndexResponse ir=client.prepareIndex("database", "table", "23").setSource(json).execute().actionGet();
String index_name=ir.getIndex();
String index_type=ir.getType();
String docid=ir.getId();
long version=ir.getVersion();
System.out.println("索引名: "+index_name+"  ");
System.out.println("索引类型: "+index_type+"  ");
System.out.println("docid: "+docid+"  ");
System.out.println("版本号: "+version+"  ");
client.close();
System.out.println("连接成功!");
}
}



好了,本篇入门小例子,就到此结束了
想了解更多有关电商互联网公司的搜索技术和大数据技术的使用,请欢迎扫码关注微信公众号:我是攻城师(woshigcs)
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园,有什么问题随时都可以留言,欢迎大家来访!


DSC0000.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-379410-1-1.html 上篇帖子: ElasticSearch入门介绍之安装部署(二) 下篇帖子: Elasticsearch store属性理解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表