Elasticsearch java api 基本使用之增、删、改、查
2015-12-03 19:20
591 查看
主要参考el的java官方文档:https://www.elastic.co/guide/en/elasticsearch/client/java-api/1.7/generate.html
一篇博客:http://www.cnblogs.com/huangfox/p/3543134.html
Elasticsearch官方指南:http://es.xiaoleilu.com/010_Intro/30_Tutorial_Search.html
@xuguokun1986的代码
主要概念
明白如下几个名词,就像上一篇中提到的那样,索引(indices)->数据库、类型(types)->表、文档(documents)->行、字段(Fields)->列;其中->后面代表的是基本的关系型数据库的表。
基本的依赖的jar包,在elasticsearch文件夹下对应的lib的文件夹中含有;其中json的文件依赖jar包的下载地址http://wiki.fasterxml.com/JacksonDownload。
报错No node available
解决方法:这里9200
改写成9300
控制台运行过程:
.......
responseIsCreated: true
responseIsCreated: true
responseIsCreated: true
responseIsCreated: true
responseIsCreated: true
responseIsCreated: true
responseIsCreated: true
it is ok !
通过CURL命令查看基本结果,插入数据成功:
一篇博客:http://www.cnblogs.com/huangfox/p/3543134.html
Elasticsearch官方指南:http://es.xiaoleilu.com/010_Intro/30_Tutorial_Search.html
@xuguokun1986的代码
主要概念
明白如下几个名词,就像上一篇中提到的那样,索引(indices)->数据库、类型(types)->表、文档(documents)->行、字段(Fields)->列;其中->后面代表的是基本的关系型数据库的表。基本的依赖的jar包,在elasticsearch文件夹下对应的lib的文件夹中含有;其中json的文件依赖jar包的下载地址http://wiki.fasterxml.com/JacksonDownload。
遇到的问题及解决方法
client = new TransportClient().addTransportAddress(new InetSocketTransportAddress(“192.168.203.148”, 9200));报错No node available
解决方法:这里9200
改写成9300
代码
创建index并插入数据
代码如下所示:<pre name="code" class="html"><pre name="code" class="html">package com.asia.myTest; import java.io.IOException; import net.sf.json.JSONObject; import org.elasticsearch.action.*; import org.apache.lucene.search.TermQuery; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.map.util.JSONPObject; import org.elasticsearch.ElasticsearchException; import org.elasticsearch.action.count.CountResponse; import org.elasticsearch.action.delete.DeleteResponse; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.index.IndexRequestBuilder; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchType; import org.elasticsearch.client.Client; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.transport.InetSocketTransportAddress; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.index.query.FilterBuilders; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.QueryBuilders.*; import static org.elasticsearch.index.query.FilterBuilders.*; public class ESClient { private Client client; public void init(){ //on start相当于连接集群 client = new TransportClient(). addTransportAddress(new InetSocketTransportAddress("192.168.203.148", 9300)); } public void close(){ //on shutdown 断开集群 client.close(); } /* *创建index,把其中的文档转化为json的格式存储 */ public void createIndex() { for (int i=0; i<=200;i++){ IndexResponse indexResponse = null; try { indexResponse = client.prepareIndex("logs", "log2015",i+"") .setSource( XContentFactory.jsonBuilder().startObject() .field("sourceIp" , "10.10.16."+i) .field("sourcePort" , 389) .field("destIp" , "114.114.114.114") .endObject()) .execute() .actionGet(); } catch (ElasticsearchException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("responseIsCreated: "+indexResponse.isCreated()); } System.out.println("it is ok !"); } /* * Get index 获取文档相当于读取数据库的一行数据 */ public void get(){ GetResponse getresponse = client.prepareGet("logs", "log2015", "1") .execute() .actionGet(); System.out.println(getresponse.getSourceAsString()); } /* *Delete index 删除文档,相当于删除一行数据 */ public void delete(){ DeleteResponse deleteresponse = client.prepareDelete("logs", "log2015","150") .execute() .actionGet(); System.out.println(deleteresponse.getVersion()); } /* *search 查询相当于关系型数据库的查询 */ public void search(){ SearchResponse searchresponse = client.prepareSearch("logs") .setTypes("log2015") .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) .setQuery(QueryBuilders.termQuery("destIp", "114.114.114.114")) .setPostFilter( FilterBuilders.rangeFilter("sourceIp") .from("10.10.16.57") .to("10.10.16.68") ) .setFrom(0) .setSize(3).setExplain(true) .execute().actionGet(); System.out.println(searchresponse.toString()); // JSONObject jsonObject = JSONObject.fromObject(searchresponse.toString()); // JSONObject hites = (JSONObject) jsonObject.get("hits"); // System.out.println(hites.get("hits").toString()); } /* *Count api 统计分析结果 */ public void count(){ CountResponse countresponse = client.prepareCount("website") .setQuery(QueryBuilders.termQuery("_type", "asia")) .execute() .actionGet(); System.out.println(countresponse.getCount()); } public static void main(String[] args){ ESClient client = new ESClient(); client.init(); //client.createIndex(); //client.get(); //client.delete(); //client.search(); client.count(); client.close(); } }
控制台运行过程:
.......
responseIsCreated: true
responseIsCreated: true
responseIsCreated: true
responseIsCreated: true
responseIsCreated: true
responseIsCreated: true
responseIsCreated: true
it is ok !
通过CURL命令查看基本结果,插入数据成功:
相关文章推荐
- Struts2接收参数的三种方式
- TestNG Eclipse Plugin Installation - Offline
- 02-SpringMVC_获得用户请求
- 《疯狂JAVA讲义》——二维数组
- spring aop中的propagation的7种配置的意思
- Eclipse中使用Android50新特性CardView
- Java历史
- JAVA加载properties文件
- java中"=="和equals()的区别
- Java中日期转换问题
- 12.3 html Div嵌套 li 无法居中解决,java公平锁监视锁
- Java中日期转换问题
- Java中日期转换问题
- Java线程中锁的问题
- Java线程中锁的问题
- springmvc 定时器
- Java之JDK安装_Ubuntu
- Java的Struts框架中的if/else标签使用详解
- java中try-catch语句的使用
- java 泛型