原文來自:http://blog.csdn.net/asia_kobe/article/details/50159887
主要參考elk的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。
遇到的問題及解決方法
client = new TransportClient().addTransportAddress(new InetSocketTransportAddress(“192.168.203.148”, 9200));
報錯No node available
解決方法:這裡9200 改寫成9300
代碼
建立index并插入資料
代碼如下所示: [html] view plain copy
- <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();
- }
- 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 !");
- }
- public void get(){
- GetResponse getresponse = client.prepareGet("logs", "log2015", "1")
- .execute()
- .actionGet();
- System.out.println(getresponse.getSourceAsString());
- }
- public void delete(){
- DeleteResponse deleteresponse = client.prepareDelete("logs", "log2015","150")
- .execute()
- .actionGet();
- System.out.println(deleteresponse.getVersion());
- }
- 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());
- }
- 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指令檢視基本結果,插入資料成功:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2QvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2LcZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39jN5ETO0EzM0EzMwITM1EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)