ElasticSearch入门之花落红尘(三)
上篇文章散仙介绍了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)
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园,有什么问题随时都可以留言,欢迎大家来访!

ElasticSearch入门之花落红尘(三)的更多相关文章
- ElasticSearch入门 第三篇:索引
这是ElasticSearch 2.4 版本系列的第三篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...
- Elasticsearch入门教程(三):Elasticsearch索引&映射
原文:Elasticsearch入门教程(三):Elasticsearch索引&映射 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文 ...
- ElasticSearch入门-搜索如此简单
搜索引擎我也不是很熟悉,但是数据库还是比较了解.可以把搜索理解为数据库的like功能的替代品.因为like有以下几点不足: 第一.like的效率不行,在使用like时,一般都用不到索引,除非使用前缀匹 ...
- 《读书报告 -- Elasticsearch入门 》--简单使用(2)
<读书报告 – Elasticsearch入门 > ' 第四章 分布式文件存储 这章的主要内容是理解数据如何在分布式系统中存储. 4.1 路由文档到分片 创建一个新文档时,它是如何确定应该 ...
- 《读书报告 -- Elasticsearch入门 》-- 安装以及简单使用(1)
<读书报告 – Elasticsearch入门 > 第一章 Elasticsearch入门 Elasticsearch是一个实时的分布式搜索和分析引擎,使得人们可以在一定规模上和一定速度上 ...
- ElasticSearch入门 附.Net Core例子
1.什么是ElasticSearch? Elasticsearch是基于Lucene的搜索引擎.它提供了一个分布式,支持多租户的全文搜索引擎,它具有HTTP Web界面和无模式JSON文档. Elas ...
- ElasticSearch入门点滴
这是Elasticsearch-6.2.4 版本系列的第一篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 ...
- ElasticSearch入门 第二篇:集群配置
这是ElasticSearch 2.4 版本系列的第二篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...
- ElasticSearch入门 第六篇:复合数据类型——数组,对象和嵌套
这是ElasticSearch 2.4 版本系列的第六篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...
随机推荐
- C puts,gets
1. char *gets(char *s); 从输入缓冲区中读取一个字符串存储到字符指针变量 str 所指向的内存空间 注意事项:空间不检查合理:要使用功能必须准备足够大的空间: #include ...
- Windows中的"簇"和Linux中的"块"是对应的
扇区是对硬盘而言,块是对文件系统而言. 簇”又称为“分配单元” ,文件系统是操作系统与驱动器之间的接口,当操作系统请求从硬盘里读取一个文件时,会请求相应的文件系统(FAT 16/32/NTFS)打开文 ...
- MySQL基础知识 数据库 数据表
1.数据库结构 库 表 数据 2. sql(structured query language)结构化查询语言 管理数据库 管理表 管理数据 3.数据库 增删改查 增 create database ...
- C++仿函数和回调函数的异同
C++回调函数(callback)与仿函数(functor)的异同 c++仿函数 functor C++仿函数和回调函数的异同
- vue cli2.x配置多环境打包
一.安装 npm install --save-dev cross-env 二.配置步骤 1.修改config下的文件 //test.env.js 'use strict' module.export ...
- fiddler设置抓取HTTPS协议数据包
1.打开工具里的选项 2.选择弹窗中的HTTPS选项,如下图进行勾选 3.若浏览器显示不安全链接则需要添加证书 提示如下点击确定证书安装成功,可以查看安装的证书,点击Action 下图即可查看fidd ...
- 实用的 atom 插件
推荐几款我喜欢的Atom插件 时间 2017-05-05 09:00:00 Hi Linux 原文 http://www.hi-linux.com/posts/28459.html 主题 Atom ...
- JAVA POI XSSFWorkbook导出扩展名为xlsx的Excel,附带weblogic 项目导出Excel文件错误的解决方案
现在很多系统都有导出excel的功能,总结一下自己之前写的,希望能帮到其他人,这里我用的是XSSFWorkbook,我们项目在winsang 用的Tomcat,LInux上用的weblogic服务器, ...
- maven项目引入外部第三方jar包,引入、本地编译、第三方jar一起打到jar中、在linux机器中解决classnotfound(配置classpath),笔记整理。
文章目录 引用的第三方jar的目录结构(示例) 引入第三方jar进行dependency使项目内能import 本地编译 第三方jar一起打到jar中 在linux机器中解决classnotfound ...
- C#实现拍照并且存水印照片
由于一直在高校工作,就涉及到招生工作,招生时候又要收集学生图像采集,所以就随手写了一个图像采集工具,废话不多说,进入正题. 图像采集需要调用摄像头就行拍照操作,网上查了一下资料,需要引用以下3个dll ...