博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Elasticsearch Java API总汇
阅读量:4186 次
发布时间:2019-05-26

本文共 13964 字,大约阅读时间需要 46 分钟。

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
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()) {    System.out.println(hit.getId());    if (hit.getFields().containsKey("title")) {        System.out.println("field.title: "+ hit.getFields().get("title").getValue());    }    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("
", "
").execute().actionGet();for(SearchHit hit: response.getHits().getHits()) { HighlightField hField = hit.getHighlightFields().get("title"); for (Text t : hField.fragments()) { System.out.println(t.string()); }}

 

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
entry : response.getSuggest().getSuggestion("first_suggestion").getEntries()) { System.out.println("Check for: " + entry.getText() + ". Options:"); for( Option option : entry.getOptions()) { System.out.println("\t" + option.getText()); }}

 

 

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
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
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();

转载地址:http://csnoi.baihongyu.com/

你可能感兴趣的文章
5月26开源沙龙活动小记
查看>>
使用JPA+Spring2.0+EasyJWeb开发企业级应用
查看>>
5月26日北京开源沙龙活动通知
查看>>
EasyJF第一次网下交流会成功召开
查看>>
EasyJWeb、RoR、JSF&Struts2,谁更Easy?
查看>>
spring源码分析-XmlBeanFactory导读
查看>>
英雄会的郁闷与收获
查看>>
一个开源组织者的感言2
查看>>
为何不使用spring、struts2、easyjweb等开源框架
查看>>
Eclipse 误删文件怎么办
查看>>
EasyJF开源从网上走到网下
查看>>
让spring帮助你在MVC层解决JPA的缓迟加载问题
查看>>
在EasyJWeb使用spring容器
查看>>
EasyJWeb中灵活的多国语言支持
查看>>
理想·环境·开源
查看>>
EasyJWeb中缺省URL映射转换器揭密
查看>>
EasyJWeb+prototype
查看>>
EasyJF开源重组见闻-1
查看>>
基于Ajax+J2EE的MicroERP源码下载
查看>>
在EasyJWeb中轻松开发Ajax运用
查看>>