- 浏览: 2149831 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (682)
- 软件思想 (7)
- Lucene(修真篇) (17)
- Lucene(仙界篇) (20)
- Lucene(神界篇) (11)
- Solr (48)
- Hadoop (77)
- Spark (38)
- Hbase (26)
- Hive (19)
- Pig (25)
- ELK (64)
- Zookeeper (12)
- JAVA (119)
- Linux (59)
- 多线程 (8)
- Nutch (5)
- JAVA EE (21)
- Oracle (7)
- Python (32)
- Xml (5)
- Gson (1)
- Cygwin (1)
- JavaScript (4)
- MySQL (9)
- Lucene/Solr(转) (5)
- 缓存 (2)
- Github/Git (1)
- 开源爬虫 (1)
- Hadoop运维 (7)
- shell命令 (9)
- 生活感悟 (42)
- shell编程 (23)
- Scala (11)
- MongoDB (3)
- docker (2)
- Nodejs (3)
- Neo4j (5)
- storm (3)
- opencv (1)
最新评论
-
qindongliang1922:
粟谷_sugu 写道不太理解“分词字段存储docvalue是没 ...
浅谈Lucene中的DocValues -
粟谷_sugu:
不太理解“分词字段存储docvalue是没有意义的”,这句话, ...
浅谈Lucene中的DocValues -
yin_bp:
高性能elasticsearch ORM开发库使用文档http ...
为什么说Elasticsearch搜索是近实时的? -
hackWang:
请问博主,有用solr做电商的搜索项目?
Solr中Group和Facet的用法 -
章司nana:
遇到的问题同楼上 为什么会返回null
Lucene4.3开发之第八步之渡劫初期(八)
上篇文章散仙介绍了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供其他编程语言调用,以及等一些插件的访问也会使用此端口,在编写程序时,切记不能写错。
好了,本篇入门小例子,就到此结束了
想了解更多有关电商互联网公司的搜索技术和大数据技术的使用,请欢迎扫码关注微信公众号:我是攻城师(woshigcs)
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园,有什么问题随时都可以留言,欢迎大家来访!
在这里散仙解释一下,为啥选择使用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排序问题的剖析
2019-07-15 21:12 1003最近线上的es查询的 ... -
elasticsearch里面bulk的用法
2018-04-09 20:23 1395上篇文章介绍了在es里 ... -
elasticsearch里面的关于批量读取mget的用法
2018-04-04 16:01 1803es的api除了提供了基本 ... -
elasticsearch的查询流程分析
2018-04-02 20:29 1279我们都知道es是一个分 ... -
如何在elasticsearch里面使用深度分页功能
2018-03-28 18:13 1962前面的文章提到过es默认的from+size的分页方式返回的结 ... -
如何在Elasticsearch里面使用索引别名
2018-03-27 20:37 1638在elasticsearch里面给index起一个alias ... -
如何优雅的全量读取Elasticsearch索引里面的数据
2018-03-26 20:27 7611### (一)scroll的介绍 有时候我们可能想要读取整个 ... -
关于elaticsearch中更新数据的几种方式
2018-03-21 19:00 921作为一个成熟的框架, ... -
Elasticsearch里面的segment合并
2018-03-20 17:50 2055通过前面的文章,我 ... -
Elasticsearch如何保证数据不丢失?
2018-03-19 20:52 2093上篇文章提到过,在elasticsearch和磁盘之间还有一层 ... -
为什么说Elasticsearch搜索是近实时的?
2018-03-16 19:41 9366通过前面两篇文章的介绍,我们大概已经知道了 Elasticse ... -
Elasticsearch如何动态维护一个不可变的倒排索引
2018-03-15 21:34 1094上一篇文章中介绍了Elasticsearch中是如何搜索文本 ... -
Elasticsearch如何检索数据
2018-03-14 20:11 983我们都知道Elasticsearch是一个全文检索引擎,那么它 ... -
如何备份ElasticSearch索引数据到HDFS上
2018-02-09 18:19 2363在ElasticSearch里面备份策略已经比较成熟了 ... -
Elasticsearch5.6.4集群搭建
2018-02-07 20:13 1296本次搭建的是一个三节点的集群 (一)es的安装 (1)下 ... -
如何使log4j生成json格式的log
2017-09-15 17:44 3780使用java开发项目时,log日志一般都是应用程序必不可少的一 ... -
理解elasticsearch的parent-child关系
2017-09-04 18:43 2791前面文章介绍了,在es里面的几种数据组织关系,包括array ... -
简述ElasticSearch里面复杂关系数据的存储方式
2017-08-18 20:10 2367在传统的数据库里面,对数据关系描述无外乎三种,一对一,一对多和 ... -
使用Java Rest Client操作Elasticsearch
2017-08-09 19:42 2215Elasticsearch作为一个成熟的开源框架,对主流的多种 ... -
ElasticSearch里面的偏好查询
2017-06-22 17:17 1258在es查询的时候我们可 ...
相关推荐
ElasticSearch入门到精通
es入门操作-elasticsearch入门操作
(狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战),包含了小狂神讲的东西,特别适合新手学习,笔记保存下来可以多看看。好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个...
Elasticsearch入门教程
Elaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来...
全套 elasticsearch从入门到精通到运维 基于ES5.6版本 有视频 文档 快速上手
ElasticStack学习之Elasticsearch入门
Elasticsearch 6.1官方入门教程.rar
第一步:启动一个elasticsearch服务,bin目录下的elasticsearch.bat 第二步:建索引,执行MusicReviewIndex中的单元测试方法index() 第三步:检索测试,执行MusicReviewSearch中的单元测试方法search() 本实例基于: ...
Elasticsearch入门视频教程下载
Elasticsearch入门篇(一、基本概念)1
最完整的Elasticsearch 基础教程,欢迎大家一起探讨学习!
Elasticsearch中文入门教程
elasticsearch的入门级课件,可用做项目初期的培训课件
Elasticsearch入门学习笔记,适用于未学过Elasticsearch的人群,其中有些内容也是参考官方文档。
elasticsearch elasticsearch-6.2.2 elasticsearch-6.2.2.zip 下载
大数据elasticsearch开源搜索引擎安装包,要下载请速度!
ElasticSearch实战教程
ElasticSearch入门和基础(高清视频教程).rar
(1)\1.课件;目录中文件数:2个 ├─2-课程内容讲解.bmpr (2)\2....目录中文件数:6个 ├─elasticsearch-7.8.0-linux-x86_64.tar.gz ...├─004 - Elasticsearch - 入门 - 环境准备.mp4 ├─005 - Elasticsearch