Elasticsearch笔记(四)—— Java API的使用
可结合上一篇(三)Elasticsearch基于Json的基本操作食用
查询相关的API
- 分页查询所有文档
@Autowiredprivate RestHighLevelClient hClient;@Testpublic void testSearch() throws IOException {// 1. 创建搜索请求对象, 需指定索引库SearchRequest searchRequest = new SearchRequest("orcas");// 1.1 指定类型searchRequest.types("doc");// 2. 搜索源构建对象SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();// 2.1 设置分页参数int page = 1; // 页码int size = 1;int from = (page - 1) * size;searchSourceBuilder.from(from); // 起始下标, 从0开始searchSourceBuilder.size(); // 每页显示记录数// 2.2 设置搜索方式 (该处是查询所有)searchSourceBuilder.query(QueryBuilders.matchAllQuery());// 2.3 设置源字段过滤 fetchSource(String[] includes, String[] excludes)searchSourceBuilder.fetchSource(new String[]{"name", "price"}, new String[]{});// 2.4 设置搜索源至搜索请求对象searchRequest.source(searchSourceBuilder);// 3. 执行搜索, 向ES发起HTTP请求SearchResponse searchResponse = hClient.search(searchRequest);// 4. 搜索结果SearchHits hits = searchResponse.getHits();// 4.1 匹配到的总记录数long totalHits = hits.getTotalHits();// 4.2 获取匹配度高的文档SearchHit[] searchHits = hits.getHits();for (SearchHit searchHit : searchHits) {String id = searchHit.getId();Map<String, Object> sourceMap = searchHit.getSourceAsMap();String name = (String)sourceMap.get("name");Double price = (Double)sourceMap.get("price");}}
- Term Query
精确匹配, 不分词
// 精确匹配, 不分词
searchSourceBuilder.query(QueryBuilders.termQuery("name", "orcas"));
- 根据(多个)id查询
searchSourceBuilder.query(QueryBuilders.termsQuery("_id", new String[] {"1", "3", "5"}));
- match query
全文检索、分词
searchSourceBuilder.query(QueryBuilders.matchQuery("name", "tiger儿童保温杯").minimumShouldMatch("80%"));
- multi query
搜索多个field
MultiMatchQueryBuilder multiMatchQuery(Object text, String... fieldNames)
// .field(String field, float boost)searchSourceBuilder.query(QueryBuilders.multiMatchQuery("tiger 保温杯", "name", "desc").minimumShouldMatch("50%").field("name", 10));
- 布尔查询
searchSourceBuilder.query(QueryBuilders.boolQuery().must(termQueryBuilder).should(multiMatchQuery));
- 过滤
对搜索结果进行过滤,不影响得分,性能较高
boolQueryBuilder.filter(QueryBuilders.termQuery("name", "保温杯"));
boolQueryBuilder.filter(QueryBuilders.rangeQuery("price").gte(200).lte(500));
- 排序
searchSourceBuilder.sort("price", SortOrder.ASC);
- 搜索高亮
for (SearchHit searchHit : searchHits) {Map<String, HighlightField> highlightFields = searchHit.getHighlightFields();if (highlightFields != null) {// 取出高亮字段HighlightField highlightName = highlightFields.get("name");if (highlightName != null) {StringBuffer stringBuffer = new StringBuffer();for (Text text : highlightName.getFragments()) {stringBuffer.append(text);}name = stringBuffer.toString();}}}HighlightBuilder highlightBuilder = new HighlightBuilder();highlightBuilder.preTags("<tag>");highlightBuilder.postTags("</tag>");highlightBuilder.fields().add(new HighlightBuilder.Field("name"));searchSourceBuilder.highlighter(highlightBuilder);
再对tag标签设置css。
Elasticsearch笔记(四)—— Java API的使用相关推荐
- ElasticSearch入门-搜索(java api)
ElasticSearch入门-搜索(java api) package com.qlyd.searchhelper;import java.util.Map;import net.sf.json.J ...
- 【ElasticSearch 学习笔记】Java API
ElasticSearch Java API 第 2 章 ElasticSearch 入门 JavaAPI - 环境准备 JavaAPI - 索引操作 创建索引 查询索引 删除索引 JavaAPI - ...
- Elasticsearch 5.x Java api Aggregations(聚合)
Ealsticsearch 5.x Java API聚合string类型的时候,会报错(json的错),则需要在聚合的string类型字段的后面添加.keyword , 虽然使用watch查看聚合的e ...
- elasticsearch 第四篇(API约定)
对多个indices进行操作 es中大多resetapi支持请求多个index, 例如"test1,test2,test3",index也可以使用通配符, 例如"test ...
- Elasticsearch Java API四种实现方式
0.题记 之前Elasticsearch的应用比较多,但大多集中在关系型.非关系型数据库与Elasticsearch之间的同步.以上内容完成了Elasticsearch所需要的基础数据量的供给.但想要 ...
- 知识图谱java实现_知识图谱:neo4j(四)Java API
知识图谱:neo4j(四)Java API 知识图谱:neo4j(四)Java API Neo4j Java API Neo4j 提供 JAVA API 以编程方式执行所有数据库操作.它支持两种类型的 ...
- Elasticsearch Java API 6.2(java client)
前言 本节描述了Elasticsearch提供的Java API,所有的Elasticsearch操作都使用客户端对象执行,所有操作本质上都是完全异步的(要么接收监听器,要么未来返回). 此外,客户端 ...
- ElasticSearch Java Api(四) -删除索引
删除可以是删除整个索引库,也可以根据文档id删除索引库下的文档,还可以通过query查询条件删除所有符合条件的数据. 一.删除整个索引库 下面的例子会删除indexName索引: DeleteInde ...
- ElasticSearch Java Api(一) -创建索引
ElasticSearch Java API官网文档:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/jav ...
- Elasticsearch java api 基本搜索部分详解
一.所使用版本的介绍 使用的是elasticsearch2.1.0版本,在此只是简单介绍搜索部分的api使用 二.简单的搜索 使用api的时候,基本上可以将DSL搜索的所有情况均写出来,在此给出一个最 ...
最新文章
- 非著名架构师告诉你,代码该如何写,才能自己写的容易别人看的也不痛苦
- ubuntu 安装pytorch
- Adobe form batch output print mode - multiple
- 3 魔改_魔改启动!《战地3》非官方MOD工具即将发布
- C++: 06---构造函数析构函数
- 华为错误报告存储在哪里_守护你的数据,华为云数据安全中心正式公测
- html 网站右侧导航,页面右侧固定导航.html
- 浅析libuv源码-node事件轮询解析(2)
- Python安装numpy模块及pycharm配置
- 银行软件的转账测试,网上银行测试转的钱怎么记会计分录?
- SSD性能怎么测?看这一篇就够了!
- 5款网络故障排除软件
- windows server域服务器作用,windows server 2012 r2AD域搭建以及域的简单功能介绍
- 懒惰删除JAVA,Redis的新特性懒惰删除Lazy Free详解
- Codeforces Young Physicist
- 判定图中存在回路java_图示电路中二极管为理想二极管,请判断它是否导通,并求出 u 0 。 (7.0分)_学小易找答案...
- vue在移动端实现电子签名手写板
- SMART目标管理方法
- delete mysql 语法_mysql delete where 语法无法使用
- iOS:如何在iphone、ipad上安装一些常用命令行命令