Elasticsearch 2.3.2 java客戶端操作

1         JAVA客戶端連接

Eclipse測試時候

需要在main方法的類中右鍵選擇run configurations,在Arguments標籤頁下的vm arguments輸入:-Des.path.home=-Des.path.home即可。比如:

-Des.path.home=Eelasticsearch安裝目錄

 

1.1   JAR

Jar可以從elasticsearch服務端 lib文件夾下拷取

 

1.2   連接方式

 

方式一 節點方式連接

// on startup

Node node = nodeBuilder().node();

Client client = node.client();

// on shutdown

node.close();

 

方式二 遠程連接方式 推薦

// on startup

Client client =   TransportClient.builder().build()

          .addTransportAddress(new   InetSocketTransportAddress(InetAddress.getByName("localhost"),   9300));

// on shutdown

client.close();

 

方式三 自動添加集羣

Settings settings =   Settings.settingsBuilder().put("client.transport.sniff",   true).build();

TransportClient client =   TransportClient.builder().settings(settings).build();

 

1.3   添加索引

String type = "one";

XContentBuilder mapping = XContentFactory

          .jsonBuilder()

          .startObject()

          .startObject("settings")

          .field("number_of_shards", 1)

          // 設置分片數量

          .field("number_of_replicas", 0)

          // 設置副本數量

          .endObject()

          .endObject()

          .startObject()

          .startObject(type)

          // type名稱

          .startObject("properties")

          // 下面是設置文檔列屬性。

          .startObject("type").field("type",   "string").field("store", "yes").endObject()

          .startObject("eventCount").field("type",   "long").field("store", "yes").endObject()

          .startObject("eventDate").field("type",   "date").field("format", "dateOptionalTime")

          .field("store",   "yes").endObject().startObject("message").field("type",   "string")

          .field("index",   "not_analyzed").field("store",   "yes").endObject().endObject().endObject().endObject();

 

String indexName = "this_one";

CreateIndexRequestBuilder cirb =   client.admin().indices().prepareCreate(indexName)// index名稱

          .setSource(mapping);

 

CreateIndexResponse response =   cirb.execute().actionGet();

if (response.isAcknowledged()) {

      System.out.println("Index created.");

} else {

      System.err.println("Index creation failed.");

}

 

1.4   添加文檔

 

// 添加文檔

IndexResponse response = client

.prepareIndex(indexName, type,   "1")

.setSource(// 這裏可以直接用son字符串

XContentFactory.jsonBuilder().startObject().field("type",   "syslog").field("eventCount", 1)

.field("eventDate", new   Date()).field("message", "sec log insert doc   test").endObject())

          .get();

System.out.println("index:" +   response.getIndex() + " insert doc id:" + response.getId() + "   result:"

          + response.isCreated());

 

1.5   查詢文檔

1.5.1     指定ID查詢

// 查詢文檔

GetResponse response =   client.prepareGet("this_one", "one",   "1").get();

String source =   response.getSource().toString();

long version = response.getVersion();

String indexName_ = response.getIndex();

String type_ = response.getType();

String id = response.getId();

System.out.println(response.getSource().get("message"));

System.out.println(source);

System.out.println("index:" +   indexName_ + " insert doc id:" + id + " type_:" + type_ +   " version:" + version);

1.5.2     指定字段查詢

SearchRequestBuilder sbuilder =   client.prepareSearch(indexName) // index name

.setTypes(type) // type name

.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)

.setQuery(QueryBuilders.termQuery("message",   "中文")) // Query

//.setPostFilter(QueryBuilders.rangeQuery("eventCount").from(1).to(18))   // Filter

.setFrom(0).setSize(20).setExplain(true);

System.out.println(sbuilder.toString());

SearchResponse response =   sbuilder.execute().actionGet();

System.out.println(response.toString());

1.5.3     表達式查詢

 

QueryBuilder query =   QueryBuilders.queryStringQuery("content=中國 or author=無名");

SearchRequestBuilder sbuilder =   client.prepareSearch(indexName) // index name

.setTypes(type) // type name

.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)

.setQuery(query)

//.setPostFilter(QueryBuilders.rangeQuery("eventCount").from(1).to(18))   // Filter

.setFrom(0).setSize(20).setExplain(true);

System.out.println(sbuilder.toString());

SearchResponse response =   sbuilder.execute().actionGet();

System.out.println(response.toString());






發佈了36 篇原創文章 · 獲贊 37 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章