zoukankan      html  css  js  c++  java
  • elasticsearch Java API汇总

    http://blog.csdn.net/changong28/article/details/38445805#comments

    3.1 集群的连接

    3.1.1 作为Elasticsearch节点

    [html] view plain copy
     
    1. 代码:  
    2. import static org.elasticsearch.node.NodeBuilder.nodeBuilder;  
    3. import org.elasticsearch.client.Client;  
    4. import org.elasticsearch.node.Node;  
    5.   
    6. Node node = nodeBuilder().clusterName("escluster2").client(true).  
    7. node();  
    8. Client client = node.client();  

    3.1.2 使用Transport连接

    [html] view plain copy
     
    1. 代码:  
    2. import org.elasticsearch.client.transport.TransportClient;  
    3. import org.elasticsearch.common.settings.ImmutableSettings;  
    4. import org.elasticsearch.common.settings.Settings;   
    5. import org.elasticsearch.common.transport.InetSocketTransportAddress;  
    6.   
    7. Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", "escluster2").build();  
    8. TransportClient client = new TransportClient(settings);  
    9. client.addTransportAddress(new InetSocketTransportAddress("127.0.0.1",9300));  

    3.2 文档的CRUD

    3.2.1 查询文档

    [java] view plain copy
     
    1. 代码:  
    2. GetResponse response = client.prepareGet("library", "book", "1")  
    3. .setFields("title", "_source")  
    4. .execute().actionGet();  



    3.2.2 索引文档

    [java] view plain copy
     
    1. 代码:  
    2. import org.elasticsearch.action.index.IndexResponse;  
    3. import org.elasticsearch.client.Client;  
    4.   
    5. IndexResponse response = client.prepareIndex("library", "book", "2")  
    6. .setSource("{ "title": "Mastering ElasticSearch"}")  
    7. .execute().actionGet();  

    3.2.3 更新文档

    [java] view plain copy
     
    1. 代码:  
    2. import org.elasticsearch.action.update.UpdateResponse;  
    3. import org.elasticsearch.client.Client;  
    4. import java.util.Map;  
    5. import org.elasticsearch.common.collect.Maps;  
    6.   
    7. Map<String, Object> params = Maps.newHashMap();  
    8. params.put("ntitle", "ElasticSearch Server Book");  
    9. UpdateResponse response = client.prepareUpdate("library", "book", "2")  
    10. .setScript("ctx._source.title = ntitle")  
    11. .setScriptParams(params)  
    12. .execute().actionGet();  

    3.2.4 删除文档

    [java] view plain copy
     
    1. 代码:  
    2. import org.elasticsearch.action.delete.DeleteResponse;  
    3. import org.elasticsearch.client.Client;  
    4.   
    5. DeleteResponse response = client.prepareDelete("library", "book", "2")  
    6. .execute().actionGet();  

    3.3 Elasticsearch检索

    3.3.1 Preparing a query

    [java] view plain copy
     
    1. 代码:  
    2. import org.elasticsearch.action.search.SearchResponse;  
    3. import org.elasticsearch.client.Client;  
    4. import org.elasticsearch.search.SearchHit;  
    5.   
    6. SearchResponse response = client.prepareSearch("library")  
    7. .addFields("title", "_source")  
    8. .execute().actionGet();  
    9. for(SearchHit hit: response.getHits().getHits()) {  
    10. <span style="white-space:pre">    </span>System.out.println(hit.getId());  
    11. <span style="white-space:pre">    </span>if (hit.getFields().containsKey("title")) {  
    12. <span style="white-space:pre">        </span>System.out.println("field.title: "+ hit.getFields().get("title").getValue());  
    13. <span style="white-space:pre">    </span>}  
    14. <span style="white-space:pre">    </span>System.out.println("source.title: " + hit.getSource().get("title"));  
    15. }  




    3.3.2 Building queries

    [java] view plain copy
     
    1. 代码:  
    2. import org.elasticsearch.index.query.QueryBuilder;  
    3. import org.elasticsearch.index.query.QueryBuilders;  
    4.   
    5. QueryBuilder queryBuilder = QueryBuilders  
    6. .disMaxQuery()  
    7. .add(QueryBuilders.termQuery("title", "Elastic"))  
    8. .add(QueryBuilders.prefixQuery("title", "el"));  
    9. System.out.println(queryBuilder.toString());  
    10. SearchResponse response = client.prepareSearch("library")  
    11. .setQuery(queryBuilder)  
    12. .execute().actionGet();  

    3.3.3 Using the match all documents query

    [java] view plain copy
     
    1. 代码:  
    2. queryBuilder = QueryBuilders.matchAllQuery()  
    3. .boost(11f).normsField("title");  

    3.3.4 The match query

    [java] view plain copy
     
    1. 代码:  
    2. queryBuilder = QueryBuilders  
    3. .matchQuery("message", "a quick brown fox")  
    4. .operator(Operator.AND)  
    5. .zeroTermsQuery(ZeroTermsQuery.ALL);  

    3.3.5 Using the geo shape query

    [java] view plain copy
     
    1. 代码:  
    2. queryBuilder = QueryBuilders.geoShapeQuery("location",  
    3. ShapeBuilder.newRectangle()  
    4. .topLeft(13, 53)  
    5. .bottomRight(14, 52)  
    6. .build());  

    3.3.6 Paging query

    [java] view plain copy
     
    1. 代码:  
    2. SearchResponse response = client.prepareSearch("library")  
    3. .setQuery(QueryBuilders.matchAllQuery())  
    4. .setFrom(10)  
    5. .setSize(20)  
    6. .execute().actionGet();  

    3.3.7 Sorting

    [java] view plain copy
     
    1. 代码:  
    2. SearchResponse response = client.prepareSearch("library")  
    3. .setQuery(QueryBuilders.matchAllQuery())  
    4. .addSort(SortBuilders.fieldSort("title"))  
    5. .addSort("_score", SortOrder.DESC)  
    6. .execute().actionGet()  

    3.3.8 Filtering

    [java] view plain copy
     
    1. 代码:  
    2. FilterBuilder filterBuilder = FilterBuilders  
    3. .andFilter(  
    4. FilterBuilders.existsFilter("title").filterName("exist"),  
    5. FilterBuilders.termFilter("title", "elastic")  
    6. );  
    7. SearchResponse response = client.prepareSearch("library")  
    8. .setFilter(filterBuilder)  
    9. .execute().actionGet();  



    3.3.9 Faceting

    [java] view plain copy
     
    1. 代码:  
    2. FacetBuilder facetBuilder = FacetBuilders  
    3. .filterFacet("test")  
    4. .filter(FilterBuilders.termFilter("title", "elastic"));  
    5. SearchResponse response = client.prepareSearch("library")  
    6. .addFacet(facetBuilder)  
    7. .execute().actionGet();  



    3.3.10 Highlighting

    [java] view plain copy
     
    1. 代码:  
    2. SearchResponse response = client.prepareSearch("wikipedia")  
    3. .addHighlightedField("title")  
    4. .setQuery(QueryBuilders.termQuery("title", "actress"))  
    5. .setHighlighterPreTags("<1>", "<2>")  
    6. .setHighlighterPostTags("</1>", "</2>")  
    7. .execute().actionGet();  
    8. for(SearchHit hit: response.getHits().getHits()) {  
    9. <span style="white-space:pre">    </span>HighlightField hField = hit.getHighlightFields().get("title");  
    10. <span style="white-space:pre">    </span>for (Text t : hField.fragments()) {  
    11. <span style="white-space:pre">        </span>System.out.println(t.string());  
    12. <span style="white-space:pre">    </span>}  
    13. }  

    3.3.11 Suggestions

    [java] view plain copy
     
    1. 代码:  
    2. SearchResponse response = client.prepareSearch("wikipedia")  
    3. .setQuery(QueryBuilders.matchAllQuery())  
    4. .addSuggestion(new TermSuggestionBuilder("first_suggestion")  
    5. .text("graphics designer")  
    6. .field("_all"))  
    7. .execute().actionGet();  
    8.   
    9. for( Entry<? extends Option> entry : response.getSuggest().getSuggestion("first_suggestion").getEntries()) {  
    10. <span style="white-space:pre">    </span>System.out.println("Check for: " + entry.getText() + ". Options:");  
    11. <span style="white-space:pre">    </span>for( Option option : entry.getOptions()) {  
    12. <span style="white-space:pre">        </span>System.out.println(" " + option.getText());  
    13. <span style="white-space:pre">    </span>}  
    14. }  

    3.3.12 Counting

    [java] view plain copy
     
    1. 代码:  
    2. CountResponse response = client.prepareCount("library")  
    3. .setQuery(QueryBuilders.termQuery("title", "elastic"))  
    4. .execute().actionGet();  

    3.3.13 Scrolling

    [java] view plain copy
     
    1. 代码:  
    2. SearchResponse responseSearch = client.prepareSearch("library")  
    3. .setScroll("1m")  
    4. .setSearchType(SearchType.SCAN)  
    5. .execute().actionGet();  
    6. String scrollId = responseSearch.getScrollId();  
    7. SearchResponse response = client.prepareSearchScroll(scrollId).execute().actionGet();  

    3.3.14 Bulk

    [java] view plain copy
     
    1. 代码:  
    2. BulkResponse response = client.prepareBulk()  
    3. .add(client.prepareIndex("library", "book", "5")  
    4. .setSource("{ "title" : "Solr Cookbook"}")  
    5. .request())  
    6. .add(client.prepareDelete("library", "book", "2").request()).execute().actionGet();  

    3.3.15 The delete by query

    [java] view plain copy
     
    1. 代码:  
    2. DeleteByQueryResponse response = client.prepareDeleteByQuery("library")  
    3. .setQuery(QueryBuilders.termQuery("title", "ElasticSearch"))  
    4. .execute().actionGet();  



    3.3.16 Multi GET

    [java] view plain copy
     
    1. 代码:  
    2. MultiGetResponse response = client.prepareMultiGet()  
    3. .add("library", "book", "1", "2")  
    4. .execute().actionGet();  


    3.3.16 Multi Search

    [java] view plain copy
     
    1. 代码:  
    2. MultiSearchResponse response = client.prepareMultiSearch()  
    3. .add(client.prepareSearch("library", "book").request())  
    4. .add(client.prepareSearch("news").  
    5. .setFilter(FilterBuilders.termFilter("tags", "important")))  
    6. .execute().actionGet();  



    3.3.17 Building JSON queries and documents

    [java] view plain copy
     
    1. 代码:  
    2. IndexResponse response = client  
    3. .prepareIndex("library", "book", "2")  
    4. .setSource("{ "title": "Mastering ElasticSearch"}")  
    5. .execute().actionGet();  
    6.   
    7. Map<String, Object> m = Maps.newHashMap();  
    8. m.put("1", "Introduction");  
    9. m.put("2", "Basics");  
    10. m.put("3", "And the rest");  
    11. XContentBuilder json = XContentFactory.jsonBuilder().prettyPrint()  
    12. .startObject()  
    13. .field("id").value("2123")  
    14. .field("lastCommentTime", new Date())  
    15. .nullField("published")  
    16. .field("chapters").map(m)  
    17. .field("title", "Mastering ElasticSearch")  
    18. .array("tags", "search", "ElasticSearch", "nosql")  
    19. .field("values")  
    20. .startArray()  
    21. .value(1)  
    22. .value(10)  
    23. .endArray()  
    24. .endObject();  

    3.4 The administration API

    3.4.1 The cluster administration API

    3.4.1.1 The cluster and indices health API

    [java] view plain copy
     
    1. 代码:  
    2. ClusterHealthResponse response = client.admin().cluster()  
    3. .prepareHealth("library")  
    4. .execute().actionGet();  

    3.4.1.2 The cluster state API

    [java] view plain copy
     
    1. 代码:  
    2. ClusterStateResponse response = client.admin().cluster()  
    3. .prepareState()  
    4. .execute().actionGet();  

    3.4.1.3 The update settings API

    [java] view plain copy
     
    1. 代码:  
    2. Map<String, Object> map = Maps.newHashMap();  
    3. map.put("indices.ttl.interval", "10m");  
    4. ClusterUpdateSettingsResponse response = client.admin().cluster()  
    5. .prepareUpdateSettings()  
    6. .setTransientSettings(map)  
    7. .execute().actionGet();  

    3.4.1.4 The reroute API

    [java] view plain copy
     
    1. 代码:  
    2. ClusterRerouteResponse response = client.admin().cluster()  
    3. .prepareReroute()  
    4. .setDryRun(true)  
    5. .add(new MoveAllocationCommand(new ShardId("library", 3), "G3czOt4HQbKZT1RhpPCULw",PvHtEMuRSJ6rLJ27AW3U6w"),  
    6.      new CancelAllocationCommand(new ShardId("library", 2), "G3czOt4HQbKZT1RhpPCULw",rue))  
    7. .execute().actionGet();  

    3.4.1.5 The nodes information API

    [java] view plain copy
     
    1. 代码:  
    2. NodesInfoResponse response = client.admin().cluster()  
    3. .prepareNodesInfo()  
    4. .setNetwork(true)  
    5. .setPlugin(true)  
    6. .execute().actionGet();  

    3.4.1.6 The node statistics API

    [java] view plain copy
     
    1. 代码:  
    2. NodesStatsResponse response = client.admin().cluster()  
    3. .prepareNodesStats()  
    4. .all()  
    5. .execute().actionGet();  

    3.4.1.7 The nodes hot threads API

    [java] view plain copy
     
    1. 代码:  
    2. NodesHotThreadsResponse response = client.admin().cluster()  
    3. .prepareNodesHotThreads()  
    4. .execute().actionGet();  

    3.4.1.8 The nodes shutdown API

    [java] view plain copy
     
    1. 代码:  
    2. NodesShutdownResponse response = client.admin().cluster()  
    3. .prepareNodesShutdown()  
    4. .execute().actionGet();  

    3.4.1.9 The search shards API

    [java] view plain copy
     
    1. 代码:  
    2. ClusterSearchShardsResponse response = client.admin().cluster()  
    3. .prepareSearchShards()  
    4. .setIndices("library")  
    5. .setRouting("12")  
    6. .execute().actionGet();  

    3.4.2 The Indices administration API

    3.4.2.1 The index existence API

    [java] view plain copy
     
    1. 代码:  
    2. IndicesExistsResponse response = client.admin().indices()  
    3. .prepareExists("books", "library")  
    4. .execute().actionGet();  



    3.4.2.2 The Type existence API

    [java] view plain copy
     
    1. 代码:  
    2. TypesExistsResponse response = client.admin().indices()  
    3. .prepareTypesExists("library")  
    4. .setTypes("book")  
    5. .execute().actionGet();  



    3.4.2.3 The indices stats API

    [java] view plain copy
     
    1. 代码:  
    2. IndicesStatsResponse response = client.admin().indices()  
    3. .prepareStats("library")  
    4. .all()  
    5. .execute().actionGet();  


    3.4.2.4 Index status

    [java] view plain copy
     
    1. 代码:  
    2. IndicesStatusResponse response = client.admin().indices()  
    3. .prepareStatus("library")  
    4. .setRecovery(true)  
    5. .setSnapshot(true)  
    6. .execute().actionGet();  



    3.4.2.5 Segments information API

    [java] view plain copy
     
    1. 代码:  
    2. IndicesSegmentResponse response = client.admin().indices()  
    3. .prepareSegments("library")  
    4. .execute().actionGet();  



    3.4.2.6 Creating an index API

    [java] view plain copy
     
    1. 代码:  
    2. CreateIndexResponse response = client.admin().indices()  
    3. .prepareCreate("news")  
    4. .setSettings(ImmutableSettings.settingsBuilder()  
    5. .put("number_of_shards", 1))  
    6. .addMapping("news", XContentFactory.jsonBuilder()  
    7. .startObject()  
    8. .startObject("news")  
    9. .startObject("properties")  
    10. .startObject("title")  
    11. .field("analyzer", "whitespace")  
    12. .field("type", "string")  
    13. .endObject()  
    14. .endObject()  
    15. .endObject()  
    16. .endObject())  
    17. .execute().actionGet();  



    3.4.2.7 Deleting an index

    [java] view plain copy
     
    1. 代码:  
    2. DeleteIndexResponse response = client.admin().indices()  
    3. .prepareDelete("news")  
    4. .execute().actionGet();  



    3.4.2.8 Closing an index

    [java] view plain copy
     
    1. 代码:  
    2. CloseIndexResponse response = client.admin().indices()  
    3. .prepareClose("library")  
    4. .execute().actionGet();  



    3.4.2.9 Opening an index

    [java] view plain copy
     
    1. 代码:  
    2. OpenIndexResponse response = client.admin().indices()  
    3. .prepareOpen("library")  
    4. .execute().actionGet();  



    3.4.2.10 The Refresh API

    [java] view plain copy
     
    1. 代码:  
    2. RefreshResponse response = client.admin().indices()  
    3. .prepareRefresh("library")  
    4. .execute().actionGet();  



    3.4.2.11 The Flush API

    [java] view plain copy
     
    1. 代码:  
    2. FlushResponse response = client.admin().indices()  
    3. .prepareFlush("library")  
    4. .setFull(false)  
    5. .execute().actionGet();  



    3.4.2.12 The Optimize API

    [java] view plain copy
     
    1. 代码:  
    2. OptimizeResponse response = client.admin().indices()  
    3. .prepareOptimize("library")  
    4. .setMaxNumSegments(2)  
    5. .setFlush(true)  
    6. .setOnlyExpungeDeletes(false)  
    7. .execute().actionGet();  


    3.4.2.13 The put mapping API

    [java] view plain copy
     
    1. 代码:  
    2. PutMappingResponse response = client.admin().indices()  
    3. .preparePutMapping("news")  
    4. .setType("news")  
    5. .setSource(XContentFactory.jsonBuilder()  
    6. .startObject()  
    7. .startObject("news")  
    8. .startObject("properties")  
    9. .startObject("title")  
    10. .field("analyzer", "whitespace")  
    11. .field("type", "string")  
    12. .endObject()  
    13. .endObject()  
    14. .endObject()  
    15. .endObject())  
    16. .execute().actionGet();  



    3.4.2.14 The delete mapping API

    [java] view plain copy
     
    1. 代码:  
    2. DeleteMappingResponse response = client.admin().indices()  
    3. .prepareDeleteMapping("news")  
    4. .setType("news")  
    5. .execute().actionGet();  


    3.4.2.15 The gateway snapshot API

    [java] view plain copy
     
    1. 代码:  
    2. GatewaySnapshotResponse response = client.admin().indices()  
    3. .prepareGatewaySnapshot("news")  
    4. .execute().actionGet();  

    3.4.2.16 The aliases API

    [java] view plain copy
     
    1. 代码:  
    2. IndicesAliasesResponse response = client.admin().indices()  
    3. .prepareAliases()  
    4. .addAlias("news", "n")  
    5. .addAlias("library", "elastic_books",   
    6. FilterBuilders.termFilter("title", "elasticsearch"))  
    7. .removeAlias("news", "current_news")  
    8. .execute().actionGet();  



    3.4.2.17 The get aliases API

    [java] view plain copy
     
    1. 代码:  
    2. IndicesGetAliasesResponse response = client.admin().indices()  
    3. .prepareGetAliases("elastic_books", "n")  
    4. .execute().actionGet();  



    3.4.2.18 The aliases exists API

    [java] view plain copy
     
    1. 代码:  
    2. AliasesExistResponse response = client.admin().indices()  
    3. .prepareAliasesExist("elastic*", "unknown")  
    4. .execute().actionGet();  



    3.4.2.19 The clear cache API

    [java] view plain copy
     
    1. 代码:  
    2. ClearIndicesCacheResponse response = client.admin().indices()  
    3. .prepareClearCache("library")  
    4. .setFieldDataCache(true)  
    5. .setFields("title")  
    6. .setFilterCache(true)  
    7. .setIdCache(true)  
    8. .execute().actionGet();  


    3.4.2.20 The update settings API

    [java] view plain copy
     
    1. 代码:  
    2. UpdateSettingsResponse response = client.admin().indices()  
    3. .prepareUpdateSettings("library")  
    4. .setSettings(ImmutableSettings.builder()  
    5. .put("index.number_of_replicas", 2))  
    6. .execute().actionGet();  



    3.4.2.21 The analyze API

    [java] view plain copy
     
    1. 代码:  
    2. AnalyzeResponse response = client.admin().indices()  
    3. .prepareAnalyze("library", "ElasticSearch Servers")  
    4. .setTokenizer("whitespace")  
    5. .setTokenFilters("nGram")  
    6. .execute().actionGet();  



    3.4.2.22 The put template API

    [java] view plain copy
     
    1. 代码:  
    2. PutIndexTemplateResponse response = client.admin().indices()  
    3. .preparePutTemplate("my_template")  
    4. .setTemplate("product*")  
    5. .setSettings(ImmutableSettings.builder()  
    6. .put("index.number_of_replicas", 2)  
    7. .put("index.number_of_shards", 1))  
    8. .addMapping("item", XContentFactory.jsonBuilder()  
    9. .startObject()  
    10. .startObject("item")  
    11. .startObject("properties")  
    12. .startObject("title")  
    13. .field("type", "string")  
    14. .endObject()  
    15. .endObject()  
    16. .endObject()  
    17. .endObject())  
    18. .execute().actionGet();  


    3.4.2.23 The delete template API

    [java] view plain copy
     
    1. 代码:  
    2. DeleteIndexTemplateResponse response = client.admin().indices()  
    3. .prepareDeleteTemplate("my_*")  
    4. .execute().actionGet();  



    3.4.2.24 The validate query API

    [java] view plain copy
     
    1. 代码:  
    2. ValidateQueryResponse response = client.admin().indices()  
    3. .prepareValidateQuery("library")  
    4. .setExplain(true)  
    5. .setQuery(XContentFactory.jsonBuilder()  
    6. .startObject()  
    7. .field("name").value("elastic search")  
    8. .endObject().bytes())  
    9. .execute().actionGet();  

    3.4.2.25 The put warmer API

    [java] view plain copy
     
    1. 代码:  
    2. PutWarmerResponse response = client.admin().indices()  
    3. .preparePutWarmer("library_warmer")  
    4. .setSearchRequest(client.prepareSearch("library")  
    5. .addFacet(FacetBuilders  
    6. .termsFacet("tags").field("tags")))  
    7. .execute().actionGet();  

    3.4.2.26 The delete warmer API

    [java] view plain copy
     
      1. 代码:  
      2. DeleteWarmerResponse response = client.admin().indices()  
      3. .prepareDeleteWarmer()  
      4. .setName("library_*")  
      5. .execute().actionGet();  
  • 相关阅读:
    QString 与 string转换
    Lua 判断表是否为空方法
    QT 继承QWidget && 继承QDialog
    QNetworkAccessManager
    Lua语言特色
    Lua逻辑操作符
    Lua语言总结
    Lua 函数
    Lua数据类型
    QT 通过QNetworkReply *获取对应请求的URL地址
  • 原文地址:https://www.cnblogs.com/majw/p/5972980.html
Copyright © 2011-2022 走看看