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 ...
随机推荐
- 微信小程序传递URL中含有特殊字符
小程序传递URL中含有特殊字符"="时,解决办法:先encodeURIComponent,取到值以后再decodeURIComponent 首先在A页面 var urls = en ...
- Python中虚拟环境venv的基本用法
环境windows 7 venv为python3中的默认库,无需安装. 创建新的venv方法, 在当前文件夹下执行cmd,输入如下代码 python -m venv bob bob为需要创建的文件夹名 ...
- 廖雪峰Java16函数式编程-2Stream-6reduce
1. 聚合方法 Stream.reduce()是一个Stream的聚合方法:把一个Stream的所有元素聚合成一个结果 例如: Stream.of(1, 2, 3, 4, 5).count(); // ...
- 关于merge的测试
测试多线程情况下merge是否能产生重复数据. merge并发测试: 测试代码: 100线程,,插入连续的1000个数字
- vue cli2.x配置多环境打包
一.安装 npm install --save-dev cross-env 二.配置步骤 1.修改config下的文件 //test.env.js 'use strict' module.export ...
- Java笔记 - Socket编程
两个Java应用程序可以通过一个双向的网络通讯连接实现数据交换,这个双向链路的一端称为一个Socket.java.net包中定义的两个类Socket和ServerSocket,分别用来实现双向链路的c ...
- 02-python 学习第二天
今天学习了以下几个方面的内容,虽然部分内容不能理解,跟着老师写出了代码. 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 程序练习1:购物车程序 请闭眼写出以下程序. 程序: ...
- vue表格之tableHeaderColor(修改表头背景色)
<el-table :header-cell-style="tableHeaderColor"></el-table> // 更改表头样式 tableHea ...
- js 调用接口并传参
注:需先引入 jquery.json-xx.min.js 1. 参数跟在url后面 var name = '王一'; var age = 18; $.ajax({ type : 'get', url ...
- Luogu P1041 传染病控制(搜索)
P1041 传染病控制 题意 题目背景 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范围流行,该国政府决定不惜一切代价控制传染病的蔓延.不幸的是,由于人们尚未完全认识这 ...