• [转]Elasticsearch Java API总汇


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

    3.1 集群的连接

    3.1.1 作为Elasticsearch节点

    复制代码
    import static org.elasticsearch.node.NodeBuilder.nodeBuilder;
    import org.elasticsearch.client.Client;
    import org.elasticsearch.node.Node;
    
    Node node = nodeBuilder().clusterName("escluster2").client(true).
    node();
    Client client = node.client();
    复制代码
     

    3.1.2 使用Transport连接

    复制代码
    import org.elasticsearch.client.transport.TransportClient;
    import org.elasticsearch.common.settings.ImmutableSettings;
    import org.elasticsearch.common.settings.Settings; 
    import org.elasticsearch.common.transport.InetSocketTransportAddress;
    
    Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", "escluster2").build();
    TransportClient client = new TransportClient(settings);
    client.addTransportAddress(new InetSocketTransportAddress("127.0.0.1",9300));
    复制代码
     

    3.2 文档的CRUD

    3.2.1 查询文档

     
    GetResponse response = client.prepareGet("library", "book", "1")
    .setFields("title", "_source")
    .execute().actionGet();

    3.2.2 索引文档

    import org.elasticsearch.action.index.IndexResponse;
    import org.elasticsearch.client.Client;
    
    IndexResponse response = client.prepareIndex("library", "book", "2")
    .setSource("{ "title": "Mastering ElasticSearch"}")
    .execute().actionGet();

    3.2.3 更新文档

    复制代码
    import org.elasticsearch.action.update.UpdateResponse;
    import org.elasticsearch.client.Client;
    import java.util.Map;
    import org.elasticsearch.common.collect.Maps;
    
    Map<String, Object> params = Maps.newHashMap();
    params.put("ntitle", "ElasticSearch Server Book");
    UpdateResponse response = client.prepareUpdate("library", "book", "2")
    .setScript("ctx._source.title = ntitle")
    .setScriptParams(params)
    .execute().actionGet();
    复制代码

    3.2.4 删除文档

    import org.elasticsearch.action.delete.DeleteResponse;
    import org.elasticsearch.client.Client;
    
    DeleteResponse response = client.prepareDelete("library", "book", "2")
    .execute().actionGet();

    3.3 Elasticsearch检索

    3.3.1 Preparing a query

    复制代码
    import org.elasticsearch.action.search.SearchResponse;
    import org.elasticsearch.client.Client;
    import org.elasticsearch.search.SearchHit;
    
    SearchResponse response = client.prepareSearch("library")
    .addFields("title", "_source")
    .execute().actionGet();
    for(SearchHit hit: response.getHits().getHits()) {
    <span style="white-space:pre">    </span>System.out.println(hit.getId());
    <span style="white-space:pre">    </span>if (hit.getFields().containsKey("title")) {
    <span style="white-space:pre">        </span>System.out.println("field.title: "+ hit.getFields().get("title").getValue());
    <span style="white-space:pre">    </span>}
    <span style="white-space:pre">    </span>System.out.println("source.title: " + hit.getSource().get("title"));
    }
    复制代码

    3.3.2 Building queries

    复制代码
    import org.elasticsearch.index.query.QueryBuilder;
    import org.elasticsearch.index.query.QueryBuilders;
    
    QueryBuilder queryBuilder = QueryBuilders
    .disMaxQuery()
    .add(QueryBuilders.termQuery("title", "Elastic"))
    .add(QueryBuilders.prefixQuery("title", "el"));
    System.out.println(queryBuilder.toString());
    SearchResponse response = client.prepareSearch("library")
    .setQuery(queryBuilder)
    .execute().actionGet();
    复制代码

    3.3.3 Using the match all documents query

    queryBuilder = QueryBuilders.matchAllQuery()
    .boost(11f).normsField("title");

    3.3.4 The match query

    queryBuilder = QueryBuilders
    .matchQuery("message", "a quick brown fox")
    .operator(Operator.AND)
    .zeroTermsQuery(ZeroTermsQuery.ALL);

    3.3.5 Using the geo shape query

    queryBuilder = QueryBuilders.geoShapeQuery("location",
    ShapeBuilder.newRectangle()
    .topLeft(13, 53)
    .bottomRight(14, 52)
    .build());

    3.3.6 Paging query

    SearchResponse response = client.prepareSearch("library")
    .setQuery(QueryBuilders.matchAllQuery())
    .setFrom(10)
    .setSize(20)
    .execute().actionGet();

    3.3.7 Sorting

    SearchResponse response = client.prepareSearch("library")
    .setQuery(QueryBuilders.matchAllQuery())
    .addSort(SortBuilders.fieldSort("title"))
    .addSort("_score", SortOrder.DESC)
    .execute().actionGet()

    3.3.8 Filtering

    复制代码
    FilterBuilder filterBuilder = FilterBuilders
    .andFilter(
    FilterBuilders.existsFilter("title").filterName("exist"),
    FilterBuilders.termFilter("title", "elastic")
    );
    SearchResponse response = client.prepareSearch("library")
    .setFilter(filterBuilder)
    .execute().actionGet();
    复制代码

    3.3.9 Faceting

    FacetBuilder facetBuilder = FacetBuilders
    .filterFacet("test")
    .filter(FilterBuilders.termFilter("title", "elastic"));
    SearchResponse response = client.prepareSearch("library")
    .addFacet(facetBuilder)
    .execute().actionGet();

    3.3.10 Highlighting

    复制代码
    SearchResponse response = client.prepareSearch("wikipedia")
    .addHighlightedField("title")
    .setQuery(QueryBuilders.termQuery("title", "actress"))
    .setHighlighterPreTags("<1>", "<2>")
    .setHighlighterPostTags("</1>", "</2>")
    .execute().actionGet();
    for(SearchHit hit: response.getHits().getHits()) {
    <span style="white-space:pre">    </span>HighlightField hField = hit.getHighlightFields().get("title");
    <span style="white-space:pre">    </span>for (Text t : hField.fragments()) {
    <span style="white-space:pre">        </span>System.out.println(t.string());
    <span style="white-space:pre">    </span>}
    }
    复制代码

    3.3.11 Suggestions

    复制代码
    SearchResponse response = client.prepareSearch("wikipedia")
    .setQuery(QueryBuilders.matchAllQuery())
    .addSuggestion(new TermSuggestionBuilder("first_suggestion")
    .text("graphics designer")
    .field("_all"))
    .execute().actionGet();
    
    for( Entry<? extends Option> entry : response.getSuggest().getSuggestion("first_suggestion").getEntries()) {
    <span style="white-space:pre">    </span>System.out.println("Check for: " + entry.getText() + ". Options:");
    <span style="white-space:pre">    </span>for( Option option : entry.getOptions()) {
    <span style="white-space:pre">        </span>System.out.println("	" + option.getText());
    <span style="white-space:pre">    </span>}
    }
    复制代码

    3.3.12 Counting

    CountResponse response = client.prepareCount("library")
    .setQuery(QueryBuilders.termQuery("title", "elastic"))
    .execute().actionGet();

    3.3.13 Scrolling

    SearchResponse responseSearch = client.prepareSearch("library")
    .setScroll("1m")
    .setSearchType(SearchType.SCAN)
    .execute().actionGet();
    String scrollId = responseSearch.getScrollId();
    SearchResponse response = client.prepareSearchScroll(scrollId).execute().actionGet();

    3.3.14 Bulk

    BulkResponse response = client.prepareBulk()
    .add(client.prepareIndex("library", "book", "5")
    .setSource("{ "title" : "Solr Cookbook"}")
    .request())
    .add(client.prepareDelete("library", "book", "2").request()).execute().actionGet();

    3.3.15 The delete by query

    DeleteByQueryResponse response = client.prepareDeleteByQuery("library")
    .setQuery(QueryBuilders.termQuery("title", "ElasticSearch"))
    .execute().actionGet();



    3.3.16 Multi GET

    MultiGetResponse response = client.prepareMultiGet()
    .add("library", "book", "1", "2")
    .execute().actionGet();


    3.3.16 Multi Search

    MultiSearchResponse response = client.prepareMultiSearch()
    .add(client.prepareSearch("library", "book").request())
    .add(client.prepareSearch("news").
    .setFilter(FilterBuilders.termFilter("tags", "important")))
    .execute().actionGet();



    3.3.17 Building JSON queries and documents

    复制代码
    IndexResponse response = client
    .prepareIndex("library", "book", "2")
    .setSource("{ "title": "Mastering ElasticSearch"}")
    .execute().actionGet();
    
    Map<String, Object> m = Maps.newHashMap();
    m.put("1", "Introduction");
    m.put("2", "Basics");
    m.put("3", "And the rest");
    XContentBuilder json = XContentFactory.jsonBuilder().prettyPrint()
    .startObject()
    .field("id").value("2123")
    .field("lastCommentTime", new Date())
    .nullField("published")
    .field("chapters").map(m)
    .field("title", "Mastering ElasticSearch")
    .array("tags", "search", "ElasticSearch", "nosql")
    .field("values")
    .startArray()
    .value(1)
    .value(10)
    .endArray()
    .endObject();
    复制代码

    3.4 The administration API

    3.4.1 The cluster administration API

    3.4.1.1 The cluster and indices health API

    ClusterHealthResponse response = client.admin().cluster()
    .prepareHealth("library")
    .execute().actionGet();

    3.4.1.2 The cluster state API

    ClusterStateResponse response = client.admin().cluster()
    .prepareState()
    .execute().actionGet();

    3.4.1.3 The update settings API

    Map<String, Object> map = Maps.newHashMap();
    map.put("indices.ttl.interval", "10m");
    ClusterUpdateSettingsResponse response = client.admin().cluster()
    .prepareUpdateSettings()
    .setTransientSettings(map)
    .execute().actionGet();

    3.4.1.4 The reroute API

    ClusterRerouteResponse response = client.admin().cluster()
    .prepareReroute()
    .setDryRun(true)
    .add(new MoveAllocationCommand(new ShardId("library", 3), "G3czOt4HQbKZT1RhpPCULw",PvHtEMuRSJ6rLJ27AW3U6w"),
         new CancelAllocationCommand(new ShardId("library", 2), "G3czOt4HQbKZT1RhpPCULw",rue))
    .execute().actionGet();

    3.4.1.5 The nodes information API

    NodesInfoResponse response = client.admin().cluster()
    .prepareNodesInfo()
    .setNetwork(true)
    .setPlugin(true)
    .execute().actionGet();

    3.4.1.6 The node statistics API

    NodesStatsResponse response = client.admin().cluster()
    .prepareNodesStats()
    .all()
    .execute().actionGet();

    3.4.1.7 The nodes hot threads API

    NodesHotThreadsResponse response = client.admin().cluster()
    .prepareNodesHotThreads()
    .execute().actionGet();

    3.4.1.8 The nodes shutdown API

    NodesShutdownResponse response = client.admin().cluster()
    .prepareNodesShutdown()
    .execute().actionGet();

    3.4.1.9 The search shards API

    ClusterSearchShardsResponse response = client.admin().cluster()
    .prepareSearchShards()
    .setIndices("library")
    .setRouting("12")
    .execute().actionGet();

    3.4.2 The Indices administration API

    3.4.2.1 The index existence API

    IndicesExistsResponse response = client.admin().indices()
    .prepareExists("books", "library")
    .execute().actionGet();



    3.4.2.2 The Type existence API

    TypesExistsResponse response = client.admin().indices()
    .prepareTypesExists("library")
    .setTypes("book")
    .execute().actionGet();



    3.4.2.3 The indices stats API

    IndicesStatsResponse response = client.admin().indices()
    .prepareStats("library")
    .all()
    .execute().actionGet();


    3.4.2.4 Index status

    IndicesStatusResponse response = client.admin().indices()
    .prepareStatus("library")
    .setRecovery(true)
    .setSnapshot(true)
    .execute().actionGet();

    3.4.2.5 Segments information API

    IndicesSegmentResponse response = client.admin().indices()
    .prepareSegments("library")
    .execute().actionGet();

    3.4.2.6 Creating an index API

    复制代码
    CreateIndexResponse response = client.admin().indices()
    .prepareCreate("news")
    .setSettings(ImmutableSettings.settingsBuilder()
    .put("number_of_shards", 1))
    .addMapping("news", XContentFactory.jsonBuilder()
    .startObject()
    .startObject("news")
    .startObject("properties")
    .startObject("title")
    .field("analyzer", "whitespace")
    .field("type", "string")
    .endObject()
    .endObject()
    .endObject()
    .endObject())
    .execute().actionGet();
    复制代码

    3.4.2.7 Deleting an index

    DeleteIndexResponse response = client.admin().indices()
    .prepareDelete("news")
    .execute().actionGet();

    3.4.2.8 Closing an index

    CloseIndexResponse response = client.admin().indices()
    .prepareClose("library")
    .execute().actionGet();



    3.4.2.9 Opening an index

    OpenIndexResponse response = client.admin().indices()
    .prepareOpen("library")
    .execute().actionGet();



    3.4.2.10 The Refresh API

    RefreshResponse response = client.admin().indices()
    .prepareRefresh("library")
    .execute().actionGet();

    3.4.2.11 The Flush API

    FlushResponse response = client.admin().indices()
    .prepareFlush("library")
    .setFull(false)
    .execute().actionGet();

    3.4.2.12 The Optimize API

    OptimizeResponse response = client.admin().indices()
    .prepareOptimize("library")
    .setMaxNumSegments(2)
    .setFlush(true)
    .setOnlyExpungeDeletes(false)
    .execute().actionGet();

    3.4.2.13 The put mapping API

    复制代码
    PutMappingResponse response = client.admin().indices()
    .preparePutMapping("news")
    .setType("news")
    .setSource(XContentFactory.jsonBuilder()
    .startObject()
    .startObject("news")
    .startObject("properties")
    .startObject("title")
    .field("analyzer", "whitespace")
    .field("type", "string")
    .endObject()
    .endObject()
    .endObject()
    .endObject())
    .execute().actionGet();
    复制代码



    3.4.2.14 The delete mapping API

    DeleteMappingResponse response = client.admin().indices()
    .prepareDeleteMapping("news")
    .setType("news")
    .execute().actionGet();


    3.4.2.15 The gateway snapshot API

    GatewaySnapshotResponse response = client.admin().indices()
    .prepareGatewaySnapshot("news")
    .execute().actionGet();

    3.4.2.16 The aliases API

    复制代码
    IndicesAliasesResponse response = client.admin().indices()
    .prepareAliases()
    .addAlias("news", "n")
    .addAlias("library", "elastic_books", 
    FilterBuilders.termFilter("title", "elasticsearch"))
    .removeAlias("news", "current_news")
    .execute().actionGet();
    复制代码



    3.4.2.17 The get aliases API

    IndicesGetAliasesResponse response = client.admin().indices()
    .prepareGetAliases("elastic_books", "n")
    .execute().actionGet();



    3.4.2.18 The aliases exists API

    AliasesExistResponse response = client.admin().indices()
    .prepareAliasesExist("elastic*", "unknown")
    .execute().actionGet();



    3.4.2.19 The clear cache API

    复制代码
    ClearIndicesCacheResponse response = client.admin().indices()
    .prepareClearCache("library")
    .setFieldDataCache(true)
    .setFields("title")
    .setFilterCache(true)
    .setIdCache(true)
    .execute().actionGet();
    复制代码


    3.4.2.20 The update settings API

    UpdateSettingsResponse response = client.admin().indices()
    .prepareUpdateSettings("library")
    .setSettings(ImmutableSettings.builder()
    .put("index.number_of_replicas", 2))
    .execute().actionGet();



    3.4.2.21 The analyze API

    AnalyzeResponse response = client.admin().indices()
    .prepareAnalyze("library", "ElasticSearch Servers")
    .setTokenizer("whitespace")
    .setTokenFilters("nGram")
    .execute().actionGet();



    3.4.2.22 The put template API

    1. 复制代码
      PutIndexTemplateResponse response = client.admin().indices()
      .preparePutTemplate("my_template")
      .setTemplate("product*")
      .setSettings(ImmutableSettings.builder()
      .put("index.number_of_replicas", 2)
      .put("index.number_of_shards", 1))
      .addMapping("item", XContentFactory.jsonBuilder()
      .startObject()
      .startObject("item")
      .startObject("properties")
      .startObject("title")
      .field("type", "string")
      .endObject()
      .endObject()
      .endObject()
      .endObject())
      .execute().actionGet();
      复制代码
       


    3.4.2.23 The delete template API

    DeleteIndexTemplateResponse response = client.admin().indices()
    .prepareDeleteTemplate("my_*")
    .execute().actionGet();



    3.4.2.24 The validate query API

    复制代码
    ValidateQueryResponse response = client.admin().indices()
    .prepareValidateQuery("library")
    .setExplain(true)
    .setQuery(XContentFactory.jsonBuilder()
    .startObject()
    .field("name").value("elastic search")
    .endObject().bytes())
    .execute().actionGet();
    复制代码

    3.4.2.25 The put warmer API

    PutWarmerResponse response = client.admin().indices()
    .preparePutWarmer("library_warmer")
    .setSearchRequest(client.prepareSearch("library")
    .addFacet(FacetBuilders
    .termsFacet("tags").field("tags")))
    .execute().actionGet();

    3.4.2.26 The delete warmer API

    DeleteWarmerResponse response = client.admin().indices()
    .prepareDeleteWarmer()
    .setName("library_*")
    .execute().actionGet();
  • 相关阅读:
    当统计信息不准确时,CBO可能产生错误的执行计划,并在10053 trace中找到CBO出错的位置示例
    ruby class_eval的使用
    ruby修改TXT文件
    ruby格式化
    VIM常用命令集合
    Watir::IE.attach与IE7选项卡的设置关系
    ruby 连接mysql数据库
    AutoIT删除Internet临时文件
    watir学习之—如何遍历页面所有的超链接
    watir如何取到元素的css属性
  • 原文地址:https://www.cnblogs.com/sha0830/p/5549315.html
Copyright © 2020-2023  润新知