ES es Elasticsearch 十三 Java api 实现搜索 分页查询 复杂查询 过滤查询 ids查询 等

这篇具有很好参考价值的文章主要介绍了ES es Elasticsearch 十三 Java api 实现搜索 分页查询 复杂查询 过滤查询 ids查询 等。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

Java api 实现搜索

Pom.xml

建立链接

搜索全部记录

增加规则值查某些字段

搜索分页

全代码

Ids 搜索

关键词搜索Match搜索

multi_match 搜索 多字段搜索

复杂查询 bool查询

filter  bool 复杂查询增加过滤器查询

复杂擦好像加排序

日志


Java api 实现搜索

思路 参考 api 写法 写Java代码 请求条件构建层次思路

Pom.xml

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.3.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>7.3.0</version>
</dependency>

建立链接

private RestHighLevelClient client  = new RestHighLevelClient(RestClient.builder(HttpHost.create("http://localhost:9200")));

搜索全部记录

private RestHighLevelClient client;



//搜索全部记录
@Test
public void t1() throws IOException {
    client  = new RestHighLevelClient(RestClient.builder(HttpHost.create("http://localhost:9200")));

    //请求
    SearchRequest searchRequest = new SearchRequest("myindex");
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    searchSourceBuilder.query(QueryBuilders.matchAllQuery());
    //日志  - 3ss this is the 19

    //只获取name字段
    searchSourceBuilder.fetchSource(new String[]{"name"},new String[]{});
    //日志   - 3ss this is the null


    searchRequest.source(searchSourceBuilder);

    //执行
    SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);

    //看结果
    SearchHits hits = searchResponse.getHits();
    for(SearchHit key : hits.getHits()){
        log.info(key.getId()+key.getSourceAsMap().get("name")+key.getSourceAsMap().get("age"));
    }
   
}

增加规则值查某些字段

//只获取name字段
searchSourceBuilder.fetchSource(new String[]{"name"},new String[]{});
//日志   - 3ss this is the null

搜索分页

构建请求的时候增加如下代码即可

int page = 1;//几页
int size = 3;//几条
searchSourceBuilder.from((page-1)*size);
searchSourceBuilder.size(size);

全代码

//搜索全部记录
@Test
public void t1() throws IOException {
    client  = new RestHighLevelClient(RestClient.builder(HttpHost.create("http://localhost:9200")));

    //请求
    SearchRequest searchRequest = new SearchRequest("myindex");
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

    //查询全部
    searchSourceBuilder.query(QueryBuilders.matchAllQuery());
    //日志  - 3ss this is the 19

    //只获取name字段
    searchSourceBuilder.fetchSource(new String[]{"name"},new String[]{});
    //日志   - 3ss this is the null

    //分页
    int page = 1;
    int size = 3;
    searchSourceBuilder.from((page-1)*size);
    searchSourceBuilder.size(size);


    searchRequest.source(searchSourceBuilder);
    //执行
    SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);

    //看结果
    SearchHits hits = searchResponse.getHits();

    for(SearchHit key : hits.getHits()){
        log.info(key.getId()+key.getSourceAsMap().get("name")+key.getSourceAsMap().get("age"));
    }

}

Ids 搜索


//搜索id 搜索
@Test
public void t2() throws IOException {
    //请求
    SearchRequest searchRequest = new SearchRequest("myindex");
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    //查询全部
    searchSourceBuilder.query(QueryBuilders.idsQuery().addIds("1","3"));
    searchRequest.source(searchSourceBuilder);

    //执行
    SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);

    //看结果
    SearchHits hits = searchResponse.getHits();
    for(SearchHit key : hits.getHits()){
        log.info(key.getId()+key.getSourceAsMap().get("name")+key.getSourceAsMap().get("age"));
    }

}

关键词搜索Match搜索

//搜索match 搜索
@Test
public void t3() throws IOException {
    //请求
    SearchRequest searchRequest = new SearchRequest("myindex");
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    //查询全部
    searchSourceBuilder.query(QueryBuilders.matchQuery("name","is"));
    searchRequest.source(searchSourceBuilder);

    //执行
    SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);

    //看结果
    SearchHits hits = searchResponse.getHits();
    for(SearchHit key : hits.getHits()){
        log.info(key.getId()+key.getSourceAsMap().get("name")+key.getSourceAsMap().get("age"));
    }

}

multi_match 搜索 多字段搜索

//搜索multi_match 搜索 多字段搜索
@Test
public void t4() throws IOException {
    //请求
    SearchRequest searchRequest = new SearchRequest("myindex");
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    searchSourceBuilder.query(QueryBuilders.multiMatchQuery("is","name","age"));
    searchRequest.source(searchSourceBuilder);

    //执行
    SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);

    //看结果
    SearchHits hits = searchResponse.getHits();
    for(SearchHit key : hits.getHits()){
        log.info(key.getId()+key.getSourceAsMap().get("name")+key.getSourceAsMap().get("age"));
    }

}

复杂查询 bool查询

/**
 * 复杂查询 bool 查询  多字段查询 加 可查到可不查到should
 *
 *  @author jianghaoyu
 *
 */
@Test
public void t5() throws IOException {
    //请求
    SearchRequest searchRequest = new SearchRequest("myindex");
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    BoolQueryBuilder bqb = new BoolQueryBuilder();
    MultiMatchQueryBuilder mmqb = QueryBuilders.multiMatchQuery("is","name","age");
    bqb.must(mmqb);
    bqb.should(QueryBuilders.matchQuery("name","is"));

    searchSourceBuilder.query(QueryBuilders.multiMatchQuery("is","name","age"));

    searchRequest.source(searchSourceBuilder);

    //执行
    SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);

    //看结果
    SearchHits hits = searchResponse.getHits();
    for(SearchHit key : hits.getHits()){
        log.info(key.getId()+key.getSourceAsMap().get("name")+key.getSourceAsMap().get("age"));
    }

}

filter  bool 复杂查询增加过滤器查询

/**
 * filter  bool 复杂查询增加过滤器查询
 *
 *  @author jianghaoyu
 *
 */
@Test
public void t6() throws IOException {
    //请求
    SearchRequest searchRequest = new SearchRequest("myindex");
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    BoolQueryBuilder bqb = new BoolQueryBuilder();
    MultiMatchQueryBuilder mmqb = QueryBuilders.multiMatchQuery("is","name","age");
    bqb.must(mmqb);
    bqb.should(QueryBuilders.matchQuery("name","is"));

    bqb.filter(QueryBuilders.rangeQuery("ages").gte(30).lte("90"));

    searchSourceBuilder.query(bqb);

    searchRequest.source(searchSourceBuilder);

    //执行
    SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);

    //看结果
    SearchHits hits = searchResponse.getHits();
    for(SearchHit key : hits.getHits()){
        log.info(key.getId()+" value="+key.getSourceAsMap().get("name")+key.getSourceAsMap().get("age"));
    }

}

复杂擦好像加排序

/**
 * filter  bool 复杂查询增加过滤器查询 加排序
 *
 *  @author jianghaoyu
 *
 */
@Test
public void t7() throws IOException {
    //请求
    SearchRequest searchRequest = new SearchRequest("myindex");
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    BoolQueryBuilder bqb = new BoolQueryBuilder();
    MultiMatchQueryBuilder mmqb = QueryBuilders.multiMatchQuery("is","name","age");
    bqb.must(mmqb);
    bqb.should(QueryBuilders.matchQuery("name","is"));

    bqb.filter(QueryBuilders.rangeQuery("ages").gte(30).lte("90"));

    searchSourceBuilder.query(bqb);
    searchSourceBuilder.sort("ages");

    searchRequest.source(searchSourceBuilder);

    //执行
    SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);

    //看结果
    SearchHits hits = searchResponse.getHits();
    for(SearchHit key : hits.getHits()){
        log.info(key.getId()+" value="+key.getSourceAsMap().get("name")+key.getSourceAsMap().get("ages"));
    }

}
searchSourceBuilder.sort("ages", SortOrder.DESC);

日志

23-06-01.17:37:51.316 [main            ] INFO  SpringBootEsApplicationTestsGj  - 6 value=ss this is the 55

23-06-01.17:37:51.316 [main            ] INFO  SpringBootEsApplicationTestsGj  - 62 value=ss this is the 59

23-06-01.17:37:51.317 [main            ] INFO  SpringBootEsApplicationTestsGj  - 66 value=ss this is the 66

23-06-01.17:37:51.317 [main            ] INFO  SpringBootEsApplicationTestsGj  - 3 value=ss this is the 83

23-06-01.17:37:51.317 [main            ] INFO  SpringBootEsApplicationTestsGj  - 4 value=ss this is the 83

ok

持续更新文章来源地址https://www.toymoban.com/news/detail-764793.html

到了这里,关于ES es Elasticsearch 十三 Java api 实现搜索 分页查询 复杂查询 过滤查询 ids查询 等的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ES搜索引擎入门+最佳实践(九):项目实战(二)--elasticsearch java api 进行数据增删改查

            本篇是这个系列的最后一篇了,在这之前可以先看看前面的内容: ES搜索引擎入门+最佳实践(一)_flame.liu的博客-CSDN博客 ES搜索引擎入门+最佳实践(二)_flame.liu的博客-CSDN博客 ES搜索引擎入门+最佳实践(三)_flame.liu的博客-CSDN博客 ES搜索引擎入门+最佳实践(四)_flame.liu的博客

    2024年02月12日
    浏览(42)
  • Es elasticsearch 二十 站内搜索示例 高亮内容 java springboot 实现

    目录 实现思路 代码 全依赖 参数对象 搜索实现代码全代码 日志 重点 权重 分页 入参高亮数据处理 返回出参数据处理 构建请求 请求体设置搜索字段 返回数据解析获取高亮 高亮通过设置标签和class  前端设置class字体颜色 也可直接写在后端   全依赖 参数对象 搜索实现代码

    2024年02月02日
    浏览(38)
  • ES(Elasticsearch)+SpringBoot实现分页查询

    1.ES介绍   ES作为一个搜索工具,寄托于Lucene之上,提供了方便的数据存储和搜索服务,一般的用它来作为网页数据索引以及存储用户画像(即用户标签)数据,可以提供复具有复杂的查询条件的服务。例如在网页索引中,通过倒排的方式索引的方式,对文档进行分词存储,

    2024年02月16日
    浏览(37)
  • es Elasticsearch 六 java api spirngboot 集成es

    目录 Java restApi Springboot 集成es 新增-同步 新增-异步 增删改查流程 _bulk 批量操作 新增-同步 新增-异步 增删改查流程 创建请求、2.执行、3.查看返回结果     _bulk 批量操作 ok 持续更新

    2024年02月10日
    浏览(41)
  • Elasticsearch ES实现GEO位置搜索

    ES实现GEO位置搜索 Elasticsearch-7.15.2 附近查询,也叫做距离查询(geo_distance):查询到指定中心点小于某个距离值的所有文档。 创建索引 (my_geo),直接设置mapping GEO字段的创建:添加一个字段location,类型为 geo_point。 GEO类型的字段是不能使用动态映射自动生成的,我们需要在创

    2024年01月16日
    浏览(31)
  • 黑马旅游案例(包括搜索,分页,广告置顶)中使用 elasticsearch 7.17.9 Java API

    引言 学习黑马 SpringCloud 的 es 部分时发现老师用的是es的高级客户端来操作es的,而高级客户端已经显示弃用,上网搜索发现关于新的 Java client API 只有基础的索引、文档操作,没有关于这种稍复杂案例的操作,于是自己琢磨整理了一份笔记,也为其他学习最新的 es 的小伙伴

    2024年02月11日
    浏览(33)
  • 【Elasticsearch】SpringBoot整合ES实现搜索功能 | 高亮显示

    先看代码: controller: serviceImpl: 小结 : 1、添加ES场景启动器 2、yaml配置ES 3、准备需要用到的变量 注:还有一个注入的RestHighLevelClient 结构如下: 具体调用的方法以及设置页码等参看代码。 加断点查看对应searchResponse数据结构: HighlightFields的数据结构: 对照kinaba结果: 3、根

    2024年02月11日
    浏览(34)
  • ES8 向量搜索(knn-search)java-api 实践

    官方文档-knn-search kNN搜索 k-nearest neighbor (kNN)搜索找到与查询向量最近的k个向量,如通过相似度计算。 kNN的常见用例包括: 基于自然语言处理(NLP)算法的相关性排序 产品推荐和推荐引擎 图像或视频的相似性搜索 要运行kNN搜索,您必须能够将数据转换为有意义的向量值

    2024年02月12日
    浏览(34)
  • ElasticSearch(五)SpringBoot+ES+Jsoup实现JD(京东)搜索

    项目效果 ​ 利用Jsoup爬虫爬取JD商城的商品信息,并将商品信息存储在ElasticSearch中,同时利用请求进行全文检索,同时完成高亮显示等功能。 Jsoup :jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于

    2023年04月26日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包