`
qindongliang1922
  • 浏览: 2182335 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117467
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125858
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59865
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71252
社区版块
存档分类
最新评论

ElasticSearch入门之花落红尘(三)

    博客分类:
  • ELK
阅读更多
上篇文章散仙介绍了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)
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园,有什么问题随时都可以留言,欢迎大家来访!








1
2
分享到:
评论

相关推荐

    ElasticSearch入门到精通(基于ELK技术栈ElasticSearch7.8.版本).rar

    **Elasticsearch 入门到精通** Elasticsearch 是一个高度可扩展的开源全文搜索引擎,设计用于处理大量数据,提供实时分析和搜索功能。它基于 Lucene 库,但提供了更高级别的分布式、RESTful 风格的搜索和数据分析...

    《ElasticSearch入门到实战》电子书,从入门到进阶实战项目的教程文档,框架SpringBoot框架整合ES.zip

    **Elasticsearch 入门与实战** Elasticsearch 是一个基于 Lucene 的开源全文搜索引擎,以其分布式、可扩展性、实时搜索以及强大的数据分析能力而受到广泛欢迎。它不仅支持文本搜索,还可以处理结构化和非结构化数据...

    ElasticSearch入门.pdf

    Elaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来...

    es入门操作-elasticsearch入门操作

    "Elasticsearch 入门操作" Elasticsearch 是一个基于 Lucene 库的搜索引擎,提供了一个分布式、支持多用户的全文搜索引擎,具有 HTTP Web 接口和无模式 JSON 文档。所有其他语言可以使用 RESTful API 通过端口 9200...

    (狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战)

    (狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战),包含了小狂神讲的东西,特别适合新手学习,笔记保存下来可以多看看。好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个...

    Elasticsearch入门教程

    ### Elasticsearch入门教程知识点详解 #### 一、Elasticsearch安装与基本操作 1. **解压目录结构**: - 在解压后的Elasticsearch目录中,通常包含多个子目录和文件,例如`bin`目录包含了启动脚本,`config`目录...

    ElasticSearch入门到精通到运维全套资料

    全套 elasticsearch从入门到精通到运维 基于ES5.6版本 有视频 文档 快速上手

    Elasticsearch入门学习笔记

    这篇入门学习笔记将引导初学者了解如何安装、配置以及使用Elasticsearch。 首先,让我们从安装开始。要安装Elasticsearch,你可以访问官方网站(https://www.elastic.co/cn/downloads/elasticsearch)下载最新版本...

    Elasticsearch 6.1官方入门教程.rar

    **Elasticsearch 6.1 入门教程详解** Elasticsearch是一款强大的开源搜索引擎,以其分布式、实时、可扩展和高容错性而备受青睐。在6.1版本中,它进一步提升了性能和稳定性,提供了更丰富的功能。本文将基于"Elastic...

    Elasticsearch入门.zip

    Elasticsearch是一款强大的开源搜索引擎,尤其在大数据领域中被广泛应用。它基于Lucene库构建,提供了分布式、...这个“大数据elasticsearch开源搜索引擎安装包”将带你踏入Elasticsearch的世界,开启数据探索之旅。

    ElasticSearch实战教程

    "ElasticSearch实战教程" ElasticSearch是一款分布式、RESTful 风格的搜索和数据分析引擎,能够达到近实时搜索,稳定,可靠,快速...本教程旨在帮助您快速入门ElasticSearch,掌握ElasticSearch的基本概念和实战应用。

    Elastic Search搭建使用教程.pdf(内含ElasticSearch教程权威指南)

    Elasticsearch是一款基于Lucene的开源搜索引擎,它使用RESTful接口进行数据操作,数据以JSON格式存储。Elasticsearch以其高效的全文搜索功能,实时数据处理能力,以及易于使用的特性,在众多企业中得到了广泛应用,...

    Elasticsearch 入门.pdf

    Elasticsearch 入门

    最完整的Elasticsearch 基础教程

    Elasticsearch 是一款高度可扩展的全文搜索引擎,广泛应用于大数据分析、日志分析、实时搜索等领域。本教程将深入浅出地介绍Elasticsearch的基础知识,帮助初学者快速上手。 1. **Elasticsearch 概述** - Elastic...

    第一章 ElasticSearch入门篇.docx

    "ElasticSearch 入门篇" ElasticSearch 是一个基于 Lucene 的搜索服务器,提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。ElasticSearch 是用 Java 开发的,并作为 Apache 许可条款下的开放...

    Elasticsearch入门讲解

    Elasticsearch 入门讲解 1. ELASTICSEARCH 初识 Elasticsearch(简称ES)是一款基于Lucene的开源分布式搜索引擎,以其强大的全文检索、实时分析和高可扩展性而闻名。它不仅用于传统的搜索功能,还广泛应用于日志...

    bboss-elasticsearch开发环境搭建和开发入门视频教程.

    **Elasticsearch 开发环境搭建与 BBoss 入门教程** Elasticsearch 是一个高度可扩展的开源全文搜索引擎,设计用于快速提供近实时的搜索和分析能力。BBoss(Business Boss)是基于Elasticsearch的一个强大且灵活的...

    ES基础入门培训-零基础门槛

    Search入门详解:开启你的搜索之旅 ElasticSearch(ES)是一个强大的、基于Lucene的开源搜索服务器,专门设计用于云计算环境。它提供了实时、稳定、可靠且可扩展的搜索和分析功能,支持RESTful接口,使得操作简单...

    elasticsearch基础入门.pptx

    Elasticsearch(简称ES)是一种基于Lucene的开源搜索引擎,主要设计用于分布式、实时的文档存储和搜索。它不仅能够高效地处理结构化和非结构化的数据,还提供了数据分析的功能,使得用户可以在海量数据中快速获取...

    springboot+elasticsearch,入门最详细的项目

    在本项目"springboot+elasticsearch"中,开发者提供了一个全面的入门教程,涵盖了Elasticsearch的基本操作,包括增、删、改、查等基本功能,这对于初学者理解这两者如何协同工作非常有帮助。 首先,让我们深入了解...

Global site tag (gtag.js) - Google Analytics