elasticsearch API 集合
来源:互联网 发布:nvh有限元软件 编辑:程序博客网 时间:2024/05/01 12:12
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;
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.termQuery("sid_s",text));
Search search = new Search.Builder(searchSourceBuilder.toString()).addIndex("webpage")
.build();
try {
SearchResult result = client.execute(search);
}catch(Exception e){
e.printStackTrace();
}
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) //跳过前10个文档.setSize(20) //获取20个文档.execute().actionGet();
response.getHits().totalHits()可以统计当前匹配到的结果数
3.3.7 Sorting 排序
SearchResponse response = client.prepareSearch("library").setQuery(QueryBuilders.matchAllQuery()).addSort(SortBuilders.fieldSort("title")).addSort("_score", SortOrder.DESC).execute().actionGet()
SortBuilders.scriptSort(script, type) //使用脚本来实现排序
SortBuilders.geoDistanceSort(fieldName) //根据空间距离来进行排序
提到距离问题,附带一篇博文:关于已知两点经纬度求球面最短距离的公式推导
3.3.8 Filtering 过滤
- QueryBuilder filterBuilder = QueryBuilders
- .filteredQuery(
- QueryBuilders.existsQuery("title").queryName("exist"),
- QueryBuilders.termQuery("title", "elastic")
- );
- SearchResponse response = client.prepareSearch("library")
- .setPostFilter(filterBuilder)
- .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()) { 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<? extends Option> 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.16 Multi GET 多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")..setPostFilter(QueryBuilders.termQuery("tags", "important"))).execute().actionGet();
3.3.17 Building JSON queries and documents 构造JSON格式的查询和文档
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.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) //阻止分配命令的运行,仅允许下面两个给定命令(move命令 + cacel命令)的执行.add(new MoveAllocationCommand(new ShardId("library", 3), "G3czOt4HQbKZT1RhpPCULw","PvHtEMuRSJ6rLJ27AW3U6w"), new CancelAllocationCommand(new ShardId("library", 2), "G3czOt4HQbKZT1RhpPCULw",true)).execute().actionGet();
3.4.1.5 The nodes information API 节点信息
NodesInfoResponse response = client.admin().cluster().prepareNodesInfo().setHttp(true) //响应中包括http信息.setPlugins(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.9 The search shards API 查询分片
//输出哪些节点将处理路由值为12的查询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 索引状态
IndicesStatsResponse response = client.admin().indices().prepareStatus("library").setRecovery(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(Settings.settingsBuilder().put("number_of_shards", 1)) //分片数为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").setFource(false).execute().actionGet();
3.4.2.12 The Optimize API 索引优化
OptimizeResponse response = client.admin().indices().prepareOptimize("library").setMaxNumSegments(2) //最大索引段为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.16 The aliases API 别名
IndicesAliasesResponse response = client.admin().indices().prepareAliases().addAlias("news", "n").addAlias("library", "elastic_books", QueryBuilders.termQuery("title", "elasticsearch")).removeAlias("news", "current_news") //移除news索引的别名current_news.execute().actionGet();
3.4.2.17 The get aliases API 获取别名
GetAliasesResponse 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") //以elastic开头 || 为unknown 的别名.execute().actionGet();
3.4.2.19 The clear cache API 清空缓存
ClearIndicesCacheResponse response = client.admin().indices().prepareClearCache("library").setFieldDataCache(true).setFields("title") //清空标题缓存.setQueryCache(true) //清空过滤器缓存.execute().actionGet();
3.4.2.20 The update settings API 更新设置
UpdateSettingsResponse response = client.admin().indices().prepareUpdateSettings("library").setSettings(Settings.builder().put("index.number_of_replicas", 2)) //将副本数更新为2.execute().actionGet();
3.4.2.21 The analyze API 分析API
//主要是用来检查在library索引中使用whitespace分词器 + nGram过滤器处理“ElasticSerch Servers”短语的分析处理AnalyzeResponse response = client.admin().indices().prepareAnalyze("library", "ElasticSearch Servers").setTokenizer("whitespace").setTokenFilters("nGram").execute().actionGet();
3.4.2.22 The put template API 设置模板
PutIndexTemplateResponse response = client.admin().indices().preparePutTemplate("my_template") //my_template模板名称.setTemplate("product*") //可以被任何以product开头的索引使用.setSettings(Settings.builder().put("index.number_of_replicas", 2) //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_*") //删除以my_开头的模板.execute().actionGet();
0 0
- elasticsearch API 集合
- Elasticsearch常用插件集合
- Elasticsearch常用插件集合
- Elasticsearch常用插件集合
- Elasticsearch之 java api
- elasticsearch java api优化
- ElasticSearch: Java API
- Elasticsearch Java API总汇
- elasticsearch java api资料
- elasticsearch java API ------搜索
- elasticsearch java api demo
- ElasticSearch的Java API
- Elasticsearch Java API
- 03 elasticsearch java api
- elasticsearch java query API
- Elasticsearch Java API 开发
- ElasticSearch Java API
- Elasticsearch API操作01
- Java中的static关键字解析
- MySQL导出DUMP命令备忘
- Jmeter之逻辑控制器(Logic Controller)
- Java类集框架——Set接口和子接口SortedSet以及SortedSet接口的子类TreeSet之间的联系和使用、排序设置重复元素的说明
- 一步一步学习IP路由流程
- elasticsearch API 集合
- 【linux开发】Linux下配置java环境 安装eclipse
- Laravel5框架的安装
- 改变R语言默认存储包的路径
- Single-Image Super-Resolution via Linear Mapping of Interpolated Self-Examples笔记
- Android View 的生命周期
- time_t类型和SYSTEMTIME的转换
- sqlserver数据库转为oracle数据库
- libevent学习笔记 ---- 回显服务器 (2)