一、獲取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 aString
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();