elasticsearch入門(二 基礎api實例)

本人目前使用的版本是2.0.0html

 

client java

基礎代碼以下node

Settings settings = Settings.settingsBuilder().put("cluster.name","jiangnan_cluster").put("client.transport.sniff", true).build();
try {
    ElasticClient client = TransportClient.builder().settings(settings).build()
            .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("172.24.3.95"), 9300))
            .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("172.24.3.96"), 9300))
            .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("172.24.3.97"), 9300));
} catch (UnknownHostException e) {
    e.printStackTrace();
}

官網demojson

https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.0/transport-client.htmlapi

官網給的demo 並無設置setting 的方式,使用後會有多線程

None of the configured nodes are available 異常elasticsearch

 

create indexide

基礎代碼以下 post

Map<String, Object> json = new HashMap<String, Object>();
        json.put("user","jn");
        json.put("postDate",new Date());
        json.put("message", "trying out Elasticsearch");
        IndexResponse response = client.prepareIndex("index", 「type」, 」1")
                .setSource(json)
                .get();

 

若是 此處 id 不本身定義, es 會建立一個默認的隨機碼(還未細看具體實現)似的編碼 如:AVRCKiIlXmm1GX2hHZvwui

官網demo

https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.0/java-docs-index.html

 

get index

基礎代碼以下

GetResponse response = client.prepareGet("index", "type", "1")
                .setOperationThreaded(false)
                .get();
        System.out.println(response.getSourceAsString()); 

注:setOperationThreaded 

operationthreaded 默認爲 true,此處顯示的設置爲false 表明 非多線程模式

官網demo

https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.0/java-docs-get.html

 

delete index  同 get index

官網demo

https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.0/java-docs-delete.html

 

update index

基礎代碼以下

Map<String, Object> json = new HashMap<String, Object>();
        json.put("id","ss");
        json.put("user","jbbcn");
        json.put("postDate",new Date());
        json.put("message", "trying out Elasticsearch");
        try {
            UpdateRequest request = new UpdateRequest("index","type","1")
                    .doc(jsonBuilder().startObject().field("user", "zy").endObject());
            UpdateResponse response = client.update(request).get();
            System.out.println(response.getVersion());
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }

  

          

官網demo

https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.0/java-docs-update.html

 

bulk

基礎代碼以下

BulkRequestBuilder request = client.prepareBulk();
        BulkResponse response = null;
        try {
            response = request
                    .add(client.prepareIndex("index", "type", "2")
                            .setSource(jsonBuilder().startObject().field("user", "jn5").endObject()))
                    .add(client.prepareIndex("index", "type", "3")
                            .setSource(jsonBuilder().startObject().field("user", "jn3").endObject()))
                    .add(client.prepareDelete("index","type","3"))
                    .get();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println(response.toString());

  

此處做用是將多個操做合併爲一個request 操做

官網demo

https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.0/java-docs-bulk.html

 

search index

基礎代碼以下

SearchResponse response = client.prepareSearch("index")
                .setTypes("type")
                .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
                .setQuery(QueryBuilders.termQuery("message","out"))
                .setPostFilter(QueryBuilders.existsQuery("id」))//只獲取包含 id field 的 結果
                .setFrom(0).setSize(10).setExplain(true)
                .execute()
                .actionGet();
        SearchHits searchHits = response.getHits();
        System.out.println(searchHits.hits().length);
        for(SearchHit hitFields:searchHits.getHits()){
            System.out.println(hitFields.getSource().toString());
        }

        System.out.println(response.getHits().toString());
//        獲取全部數據
//        SearchResponse response = client.prepareSearch().execute().actionGet();

  

官網demo

https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.0/java-search.html

相關文章
相關標籤/搜索