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("\t" + 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();

[转]Elasticsearch Java API总汇的更多相关文章

  1. [转载]Elasticsearch Java API总汇

    from: http://blog.csdn.net/changong28/article/details/38445805#comments 3.1 集群的连接 3.1.1 作为Elasticsea ...

  2. [搜索]ElasticSearch Java Api(一) -添加数据创建索引

    转载:http://blog.csdn.net/napoay/article/details/51707023 ElasticSearch JAVA API官网文档:https://www.elast ...

  3. Elasticsearch java api 基本搜索部分详解

    文档是结合几个博客整理出来的,内容大部分为转载内容.在使用过程中,对一些疑问点进行了整理与解析. Elasticsearch java api 基本搜索部分详解 ElasticSearch 常用的查询 ...

  4. Elasticsearch java api 常用查询方法QueryBuilder构造举例

    转载:http://m.blog.csdn.net/u012546526/article/details/74184769 Elasticsearch java api 常用查询方法QueryBuil ...

  5. 第08章 ElasticSearch Java API

    本章内容 使用客户端对象(client object)连接到本地或远程ElasticSearch集群. 逐条或批量索引文档. 更新文档内容. 使用各种ElasticSearch支持的查询方式. 处理E ...

  6. Elasticsearch Java API深入详解

    0.题记 之前Elasticsearch的应用比较多,但大多集中在关系型.非关系型数据库与Elasticsearch之间的同步.以上内容完成了Elasticsearch所需要的基础数据量的供给.但想要 ...

  7. Elasticsearch Java API 很全的整理

    Elasticsearch 的API 分为 REST Client API(http请求形式)以及 transportClient API两种.相比来说transportClient API效率更高, ...

  8. ElasticSearch Java api 详解_V1.0

    /×××××××××××××××××××××××××××××××××××××××××/ Author:xxx0624 HomePage:http://www.cnblogs.com/xxx0624/ ...

  9. Elasticsearch JAVA api搞定groupBy聚合

    本文给出如何使用Elasticsearch的Java API做类似SQL的group by聚合.为了简单起见,只给出一级groupby即group by field1(而不涉及到多级,例如group ...

随机推荐

  1. MAC安装远程工具Securecrt的破解方式(详细有图)

    想要实现mac的远程连接功能,本来想使用终端的,但是终端的很多功能是欠佳的,所以决定安装一款,像windows的xshell一样好的软件,所以选择了这款Securecrt. 首先准备两个东西,一个是S ...

  2. 使用vbs给PPT(包括公式)去背景

    在 视图—>宏 内新建宏 '终极版 Sub ReColor() Dim sld As Slide Dim sh As Shape For Each sld In ActivePresentati ...

  3. OpenNI检测不到Kinect Camera和Kinect Audio了

    ?? 只有检测到了Kinect Motor(马达)而马达是微软开发的. 那么PrimeSense出了什么问题呢? 我的系统是Win7 64位的. 是由于电源供电出错.

  4. yum 常用命令

    yum是一个用于管理rpm包的后台程序,用python写成,可以非常方便的解决rpm的依赖关系.在建立好yum服务器后,yum客户端可以通过 http.ftp方式获得软件包,并使用方便的命令直接管理. ...

  5. linux环境下(非UI操作)所有软件的安装与卸载总结

    UI界面的软件管理 linux下的软件一般都是经过压缩的,主要的格式有这几种:rpm.tar.tar.gz.tgz等.所以首先拿到软件后第一件事就是解压缩. 在xwindow下以rpm格式的软件安装比 ...

  6. hdu 1116 欧拉回路+并查集

    http://acm.hdu.edu.cn/showproblem.php?pid=1116 给你一些英文单词,判断所有单词能不能连成一串,类似成语接龙的意思.但是如果有多个重复的单词时,也必须满足这 ...

  7. python——排序

    从学校毕业出来后只知道冒泡排序,发现自己对排序的了解还是很浅显. 于是在网上搜索各种排序方法,以下是本人根据索搜出来的资料再结合自己理解作出的一些简单的阐述. 如果有不正确的地方欢迎大家指正.(共同学 ...

  8. Oracle function函数赋权

    -- 1.赋权 -- 在原有权的账号下个执行 grant select on psprd.functionName to user; -- 2. 别名 -- 在需要使用别名的账号下执行 CREATE ...

  9. c# 字符串中某个词出现的次数及索引

    字符串中某个词出现的次数主要是考察队字符串方法的使用: indexof(): 有9个重载,具体的请转到F12查看详细内容: 本文使用的是第6个重载: 如果找到该字符串,则为从零开始的索引位置:如果未找 ...

  10. 【ZOJ2314】Reactor Cooling(有上下界的网络流)

    前言 话说有上下界的网络流好像全机房就我一个人会手动滑稽,当然这是不可能的 Solution 其实这道题目就是一道板子题,主要讲解一下怎么做无源无汇的上下界最大流: 算法步骤 1.将每条边转换成0~u ...