可结合上一篇(三)Elasticsearch基于Json的基本操作食用

查询相关的API

  1. 分页查询所有文档
 @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");}}
  1. Term Query
    精确匹配, 不分词
// 精确匹配, 不分词
searchSourceBuilder.query(QueryBuilders.termQuery("name", "orcas"));
  1. 根据(多个)id查询
searchSourceBuilder.query(QueryBuilders.termsQuery("_id", new String[] {"1", "3", "5"}));
  1. match query
    全文检索、分词
searchSourceBuilder.query(QueryBuilders.matchQuery("name", "tiger儿童保温杯").minimumShouldMatch("80%"));
  1. 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));
  1. 布尔查询
searchSourceBuilder.query(QueryBuilders.boolQuery().must(termQueryBuilder).should(multiMatchQuery));
  1. 过滤
    对搜索结果进行过滤,不影响得分,性能较高
boolQueryBuilder.filter(QueryBuilders.termQuery("name", "保温杯"));
boolQueryBuilder.filter(QueryBuilders.rangeQuery("price").gte(200).lte(500));
  1. 排序
searchSourceBuilder.sort("price", SortOrder.ASC);
  1. 搜索高亮
    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的使用相关推荐

  1. ElasticSearch入门-搜索(java api)

    ElasticSearch入门-搜索(java api) package com.qlyd.searchhelper;import java.util.Map;import net.sf.json.J ...

  2. 【ElasticSearch 学习笔记】Java API

    ElasticSearch Java API 第 2 章 ElasticSearch 入门 JavaAPI - 环境准备 JavaAPI - 索引操作 创建索引 查询索引 删除索引 JavaAPI - ...

  3. Elasticsearch 5.x Java api Aggregations(聚合)

    Ealsticsearch 5.x Java API聚合string类型的时候,会报错(json的错),则需要在聚合的string类型字段的后面添加.keyword , 虽然使用watch查看聚合的e ...

  4. elasticsearch 第四篇(API约定)

    对多个indices进行操作 es中大多resetapi支持请求多个index, 例如"test1,test2,test3",index也可以使用通配符, 例如"test ...

  5. Elasticsearch Java API四种实现方式

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

  6. 知识图谱java实现_知识图谱:neo4j(四)Java API

    知识图谱:neo4j(四)Java API 知识图谱:neo4j(四)Java API Neo4j Java API Neo4j 提供 JAVA API 以编程方式执行所有数据库操作.它支持两种类型的 ...

  7. Elasticsearch Java API 6.2(java client)

    前言 本节描述了Elasticsearch提供的Java API,所有的Elasticsearch操作都使用客户端对象执行,所有操作本质上都是完全异步的(要么接收监听器,要么未来返回). 此外,客户端 ...

  8. ElasticSearch Java Api(四) -删除索引

    删除可以是删除整个索引库,也可以根据文档id删除索引库下的文档,还可以通过query查询条件删除所有符合条件的数据. 一.删除整个索引库 下面的例子会删除indexName索引: DeleteInde ...

  9. ElasticSearch Java Api(一) -创建索引

    ElasticSearch Java API官网文档:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/jav ...

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

    一.所使用版本的介绍 使用的是elasticsearch2.1.0版本,在此只是简单介绍搜索部分的api使用 二.简单的搜索 使用api的时候,基本上可以将DSL搜索的所有情况均写出来,在此给出一个最 ...

最新文章

  1. 非著名架构师告诉你,代码该如何写,才能自己写的容易别人看的也不痛苦
  2. ubuntu 安装pytorch
  3. Adobe form batch output print mode - multiple
  4. 3 魔改_魔改启动!《战地3》非官方MOD工具即将发布
  5. C++: 06---构造函数析构函数
  6. 华为错误报告存储在哪里_守护你的数据,华为云数据安全中心正式公测
  7. html 网站右侧导航,页面右侧固定导航.html
  8. 浅析libuv源码-node事件轮询解析(2)
  9. Python安装numpy模块及pycharm配置
  10. 银行软件的转账测试,网上银行测试转的钱怎么记会计分录?
  11. SSD性能怎么测?看这一篇就够了!
  12. 5款网络故障排除软件
  13. windows server域服务器作用,windows server 2012 r2AD域搭建以及域的简单功能介绍
  14. 懒惰删除JAVA,Redis的新特性懒惰删除Lazy Free详解
  15. Codeforces Young Physicist
  16. 判定图中存在回路java_图示电路中二极管为理想二极管,请判断它是否导通,并求出 u 0 。 (7.0分)_学小易找答案...
  17. vue在移动端实现电子签名手写板
  18. SMART目标管理方法
  19. delete mysql 语法_mysql delete where 语法无法使用
  20. iOS:如何在iphone、ipad上安装一些常用命令行命令

热门文章

  1. 2016小码哥杯java程序设计竞赛赛前模拟题
  2. 二叉树的堂兄弟 Cousins in Binary Tree
  3. java毕业设计_火锅店点餐系统
  4. Matlab论文绘图配色
  5. VUE + Jquery 集成的一个简易数学公式编辑器
  6. Vue+OpenLayer
  7. 【Android】录屏功能实现——MediaProjection
  8. mysql 求上个月、上上个月的第一天和最后一天
  9. MasterCAM2017车铣复合视频教程
  10. 小程序中使用goEasy实现IM实时通讯