java中ElasticSearch搜尋伺服器正常使用執行流程
1,首先建立連線搜尋服務伺服器物件
對於演示應用程式,選擇 Transport Client,並保持 Elasticsearch 執行最低級別的處理:
Client client = TransportClient .builder() .build() .addTransportAddress( new InetSocketTransportAddress (InetAddress.getByName("127.0.0.1"), 9300));
如果連線到一個 Elasticsearch 叢集,構建器可以接受多個地址。(在本例中只有一個 localhost 節點。)
TransportClient通過傳輸模式來連線到一個Elasticsearch的叢集。它並不會加入到叢集當中,而是會簡單的得到一個或者更多的初始化的傳輸地址並且在每一個活動當中以輪詢排程的方式來和它們通訊。
2,建立索引(相當於關係型資料庫中的資料庫)
client.admin().indices().prepareCreate("blog").get();//建立索引操作 //client.admin().indices().prepareDelete("blog").get();// 刪除索引
3,對映相關操作
// 構建對映的json描述文字 XContentBuilder builder = XContentFactory.jsonBuilder().startObject() .startObject("article").startObject("properties") .startObject("id").field("type", "integer") .field("store","yes").endObject() .startObject("title").field("type","string").field("store","yes").field("analyzer","ik").endObject() .startObject("content").field("type","string").field("store","yes").field("analyzer","ik").endObject().endObject().endObject().endObject();
//相當於以下的格式
{ "article":{ "properties":{ "id":{ "type":"integer", "store":"yes", }, "title":{ "type":"string",
"store":"yes",
"analyzer":"ik" }
"content":{ "type":"string",
"store":"yes",
"analyzer":"ik" } } } } }
//將對映和索引繫結,獲取對映物件 PutMappingRequest mapping =Requests.putMappingRequest("blog") .type("article").source(builder);
//新增對映 client.admin().indices().putMapping(mapping).get();
4,文件的相關操作
建立文件操作
1、 在 XContentBuilder 中構建 json 資料
//構建json資料 XContentBuilder builder = XContentFactory .jsonBuilder() .startObject() .field("id", 1) .field("title", "ElasticSearch") .field("content", "全文搜尋引擎,基於restful web介面。") .endObject();
// 建立文件物件 client.prepareIndex("blog", "article", "2").setSource(builder).get();
2、 對一個已經存在物件,轉換為 json
//Article是實體類 Article article = new Article(); article.setId(2); article.setTitle("搜尋工作其實很快樂"); article.setContent("我們希望我們的搜尋解決。");
ObjectMapper objectMapper = new ObjectMapper();
// 建立文件 client.prepareIndex("blog2", "article", article.getId().toString()) .setSource(objectMapper.writeValueAsString(article)).get();
修改文件操作 client.prepareUpdate("blog2", "article", article.getId().toString()) .setDoc(objectMapper.writeValueAsString(article)).get();
刪除文件操作
client.prepareDelete("blog2", "article", article.getId().toString()) .get();
5.關閉連線
client.close();