通過Java操作Elastic Search6,環境請看:走進大數據丨 ElasticSearch6.X的JavaAPI環境部署
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;import org.elasticsearch.action.get.GetResponse;import org.elasticsearch.action.get.MultiGetItemResponse;import org.elasticsearch.action.get.MultiGetResponse;import org.elasticsearch.action.index.IndexRequest;import org.elasticsearch.action.index.IndexResponse;import org.elasticsearch.action.search.SearchResponse;import org.elasticsearch.action.update.UpdateRequest;import org.elasticsearch.action.update.UpdateResponse;import org.elasticsearch.client.Requests;import org.elasticsearch.client.transport.TransportClient;import org.elasticsearch.common.settings.Settings;import org.elasticsearch.common.transport.TransportAddress;import org.elasticsearch.common.xcontent.XContentBuilder;import org.elasticsearch.common.xcontent.XContentFactory;import org.elasticsearch.common.xcontent.XContentType;import org.elasticsearch.index.query.QueryBuilders;import org.elasticsearch.search.SearchHit;import org.elasticsearch.search.SearchHits;import org.elasticsearch.transport.client.PreBuiltTransportClient;
import java.net.InetAddress;import java.util.HashMap;import java.util.Map;初始化獲取Elastic Search連結
public final static String HOST = "192.168.1.111"; public final static int PORT = 9300;
@SuppressWarnings({"resource", "unchecked"}) public static TransportClient getConnection() throws Exception { Settings settings = Settings.builder().put("cluster.name", "plus").build(); TransportClient client = new PreBuiltTransportClient(settings) .addTransportAddresses(new TransportAddress(InetAddress.getByName(HOST), PORT));
return client; }創建索引
public static void createIndex() throws Exception { TransportClient client = getConnection(); client.admin().indices().prepareCreate("blog12").get(); client.close(); }刪除索引
public static void deleteIndex() throws Exception { TransportClient client = getConnection(); client.admin().indices().prepareDelete("blog1").get(); client.close(); }使用Json文件,創建document
注意:在ES6.x版本之前可以直接使用jaon傳,之後更新需要添加參數XContentType.JSON
public static void createDocument() throws Exception { String json = "{" + "\"id\":\"1\"," + "\"title\":\"基於Lucene的搜索伺服器\"," + "\"content\":\"它提供了一個分布式多用戶能力的全文搜尋引擎,基於RESTful web接口\"" + "}"; IndexResponse indexResponse = getConnection().prepareIndex("blog", "article", "2").setSource(json, XContentType.JSON).execute().actionGet(); System.out.println("index"+indexResponse.getIndex()); System.out.println("Type"+indexResponse.getType()); System.out.println("ID"+indexResponse.getId()); System.out.println("version"+indexResponse.getVersion()); System.out.println("Result"+indexResponse.getResult()); getConnection().close(); }使用map集合創建document
public static void createDocumentmap() throws Exception { Map<String,String> json = new HashMap<String, String>(); json.put("id","1"); json.put("title","基於Lucene的搜索伺服器"); json.put("content","它提供了一個分布式多用戶能力的全文搜尋引擎,基於RESTful web接口");
IndexResponse indexResponse = getConnection().prepareIndex("blog", "article", "1").setSource(json).execute().actionGet(); System.out.println("index: "+indexResponse.getIndex()); System.out.println("Type: "+indexResponse.getType()); System.out.println("ID: "+indexResponse.getId()); System.out.println("version: "+indexResponse.getVersion()); System.out.println("Result: "+indexResponse.getResult()); getConnection().close(); }使用es提供的建議使用的方式
public static void createDocumentXcontent() throws Exception { XContentBuilder field = XContentFactory.jsonBuilder() .startObject() .field("id", "4") .field("title", "基於Lucene的搜索伺服器") .field("content", "它提供了一個分布式多用戶能力的全文搜尋引擎,基於RESTful web接口") .endObject();
IndexResponse indexResponse = getConnection().prepareIndex("blog", "article").setSource(field).execute().actionGet(); System.out.println("index: "+indexResponse.getIndex()); System.out.println("Type: "+indexResponse.getType()); System.out.println("ID: "+indexResponse.getId()); System.out.println("version: "+indexResponse.getVersion()); System.out.println("Result: "+indexResponse.getResult()); getConnection().close(); }