elasticsearch java api

一、獲取elasticsearch Client是簡單的,最普遍的方法是創建連接cluster 的TransportClient

注意:這個client 的版本和你在電腦上打開的服務器的主要的版本是一樣的(e.g. 2.x, or 5.x

The client must have the same major version (e.g. 2.x, or 5.x) as the nodes in the cluster. Clients may connect to clusters which have a different minor version (e.g.2.3.x) but it is possible that new functionality may not be supported. Ideally, the client should have the same version as the cluster.

二、transportclient 創建

TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host1"), 9300))
        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host2"), 9300));

// on shutdown

client.close();


Note that you have to set the cluster name if you use one different than "elasticsearch":

Settings settings = Settings.builder()
        .put("cluster.name", "myClusterName").build();
TransportClient client = new PreBuiltTransportClient(settings);
//Add transport addresses and do something with the client...

三、Document  APIS

這部分描述的是增刪改查。

單個文檔的APIS有Index API ,GET API, DELETE API,DELETE BY QUERY API,UPDATE API。

多個文檔APIS 有:Multi Get API ,Bulk API

注意:All CRUD APIs are single-index APIs. The index parameter accepts a single index name, or an alias(別名) which points to a single index.

Index API 

Index API 在特定的index中索引一個Json類型的文檔。

創建json文件有四種方式:

  • Manually (手工)(aka do it yourself) using native byte[] or as a String

  • Using a Map that will be automatically converted to its JSON equivalent(相等的)

  • Using a third party library to serialize your beans such as Jackson

  • Using built-in helpers XContentFactory.jsonBuilder()

在內部,每種類型都轉換爲byte [](所以一個String被轉換成一個byte [])。 因此,如果對象已經是這種形式,那麼使用它。 jsonBuilder是高度優化的JSON生成器,它直接構造一個byte []。

Using Map

edit

Map is a key:values pair collection. It represents a JSON structure:

Map<String, Object> json = new HashMap<String, Object>();json.put("user","kimchy");json.put("postDate",new Date());json.put("message","trying out Elasticsearch");

Use Elasticsearch helpersedit

Elasticsearch provides built-in helpers to generate JSON content.

import static org.elasticsearch.common.xcontent.XContentFactory.*;XContentBuilder builder = jsonBuilder()
    .startObject()
        .field("user", "kimchy")
        .field("postDate", new Date())
        .field("message", "trying out Elasticsearch")
    .endObject()

Index documentedit

The following example indexes a JSON document into an index called twitter, under a type called tweet, with id valued 1:

import static org.elasticsearch.common.xcontent.XContentFactory.*;IndexResponse response = client.prepareIndex("twitter", "tweet", "1")
        .setSource(jsonBuilder()
                    .startObject()
                        .field("user", "kimchy")
                        .field("postDate", new Date())
                        .field("message", "trying out Elasticsearch")
                    .endObject()
                  )
        .get();

Note that you can also index your documents as JSON String and that you don’t have to give an ID:

String json = "{" +
        "\"user\":\"kimchy\"," +
        "\"postDate\":\"2013-01-30\"," +
        "\"message\":\"trying out Elasticsearch\"" +
    "}";IndexResponse response = client.prepareIndex("twitter", "tweet")
        .setSource(json)
        .get();

IndexResponse object will give you a report:

// Index nameString _index = response.getIndex();// Type nameString _type = response.getType();// Document ID (generated or not)String _id = response.getId();// Version (if it's the first time you index this document, you will get: 1)long _version = response.getVersion();// status has stored current instance statement.RestStatus status = response.status();


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章