一、获取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.> 二、transportclient 创建
TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host1"), 9300))
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 json = new HashMap();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>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>String json = "{" +
"\"user\":\"kimchy\"," +
.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();