java直接使用dsl语句查询ES

这篇具有很好参考价值的文章主要介绍了java直接使用dsl语句查询ES。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

pom

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-elasticsearch</artifactId>
        </dependency>

客户端配置

import lombok.Data;
import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration;



@Configuration
@Data
public class ElasticsearchConfig extends AbstractElasticsearchConfiguration {
    private String host="localhost";
    private Integer port=9200;
    @Override
    public RestHighLevelClient elasticsearchClient() {
        RestClientBuilder builder = RestClient.builder(new HttpHost(host,port));
        RestHighLevelClient restHighLevelClient = new RestHighLevelClient(builder);
        return restHighLevelClient;
    }
}

dsl查询

import com.alibaba.fastjson.JSONObject;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.WrapperQueryBuilder;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;

@RestController
@RequestMapping("/es-client2")
public class EsClientController2 {
    @Autowired
    private RestHighLevelClient rstHighLevelClient;


    @PostMapping("/query2")
    public SearchResponse userEsClient(
            @RequestBody JSONObject body
    ) throws IOException {
        String index_name = body.getOrDefault("index_name", "").toString();
        System.out.println("body:" + body);

        String json = "{\"query\": {\"match\": {\"title\": \"hello world\"}}}";
        //language=JSON5
        String dsl = "{\n" +
                "  \"match_all\": {}\n" +
                "}";


        WrapperQueryBuilder queryBuilder = new WrapperQueryBuilder(dsl);
        SearchRequest searchRequest = new SearchRequest();
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        // 设置分页
        searchSourceBuilder.query(queryBuilder).from((int) 1).size((int) 10);
        searchRequest.source(searchSourceBuilder).indices(index_name);
        SearchResponse searchResp = rstHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        // 计算返回的条数


        return searchResp;
    }

}

结果

java es dsl json查询,java,elasticsearch,jenkins文章来源地址https://www.toymoban.com/news/detail-780367.html

到了这里,关于java直接使用dsl语句查询ES的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【ES专题】ElasticSearch 高级查询语法Query DSL实战

    个人在学习的过程中,感觉比较吃力的地方有如下: 语法结构比较陌生 没有中文文档, 只能看英文 其他博客也比较少介绍语法结构。比如说,为什么查询中会出现 query 有ES入门基础,且想进一步学习ES基本操作的朋友 系列上一篇文章:《【ES专题】ElasticSearch快速入

    2024年02月06日
    浏览(35)
  • 【ElasticSearch-基础篇】ES高级查询Query DSL全文检索

    和术语级别查询(Term-Level Queries)不同,全文检索查询(Full Text Queries)旨在 基于相关性搜索和匹配文本数据 。这些查询会对输入的文本进行分析,将其 拆分 为词项(单个单词),并执行诸如分词、词干处理和标准化等操作。 全文检索的关键特点: 对输入的文本进行分析

    2024年01月22日
    浏览(42)
  • sql语句转为es查询条件(elasticsearch-sql使用)

    github源码地址: https://gitee.com/weiyxiong_admin/elasticsearch-sql/blob/master/src/test/java/org/nlpcn/es4sql/ExplainTest.java 1、添加pom.xml依赖 2、scala 将sql转为es查询json语句 3、测试 4、查询返回结果展示(即步骤三esJSON结果打印) 5、打开postman

    2024年02月13日
    浏览(42)
  • java使用ElasticSearch的scroll查询,高效的解决es查询数量的限制。

    (1)首先我们要明白es的查询机制:ES的搜索是分2个阶段进行的,即 Query阶段和Fetch阶段 。 Query阶段 比较轻量级,通过查询倒排索引,获取满足查询结果的文档ID列表。 Fetch阶段 比较重,需要将每个分片的查询结果取回,在协调结点进行 全局 排序。 通过From+size这种方式分批

    2024年02月03日
    浏览(69)
  • Elasticsearch8常用查询api,java ElasticsearchClient写法和原生Rest DSL写法

    Java Client Rest Api Java Client Rest Api Java Client Rest Api Java Client Rest Api ? 用来匹配任意字符, * 用来匹配零个或者多个字符。 Java Client Rest Api Java Client Rest Api Java Client Java Client Rest Api

    2024年02月08日
    浏览(44)
  • ES7.x的查询语句及java查询语句

    Elasticsearch 7.x 是一个基于 Lucene 的分布式搜索引擎,它提供了一个分布式全文搜索引擎,可以快速、准确地搜索、分析和存储海量数据。Elasticsearch 7.x 的主要特点包括: 分布式架构:Elasticsearch 7.x 是一个分布式系统,它可以运行在多个节点上,每个节点都是相互独立的,并且

    2024年02月08日
    浏览(34)
  • Elasticsearch“滚动查询“(Scrolling)的机制的与Java使用ES Client 调用滚动查询

    ES在进行普通的查询时,默认只会查询出来10条数据。我们通过设置es中的size可以将最终的查询结果从10增加到10000。如果需要查询数据量大于es的翻页限制或者需要将es的数据进行导出又当如何? Elasticsearch提供了一种称为 \\\"滚动查询\\\"(Scrolling) 的机制,用于处理大型数据集的

    2024年02月11日
    浏览(33)
  • 【DSL】ES+DSL 查询语法

    一、前言 工作中遇到ES的查询问题,由于业务方给的条件不清晰,有些查询无法实现,需要用到DSL语法查询实现,很久没用生疏了,借此机会复习下。 二、定义 1.基本介绍 Elasticsearch(简称为ES ),一个开源的分布式搜索和分析引擎,主要用于处理大量数据并提供快速、实时

    2024年02月12日
    浏览(33)
  • Elasticsearch之常用DSL语句

    目录   1. Elasticsearch之常用DSL语句 1.1 操作索引 1.2 文档操作 1.3 DSL查询 1.4 搜索结果处理 1.5 数据聚合   mapping是对索引库中文档的约束,常见的mapping属性包括: - type:字段数据类型,常见的简单类型有:   - 字符串:text(可分词的文本)、keyword(精确值,例如:品牌、国家

    2024年02月04日
    浏览(32)
  • ElasticSearch如何使用以及java代码如何查询并排序ES中的数据(距离排序)

    import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.geo.GeoDistance; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.TransportAddress; import org.elasticsearch.common.unit.DistanceUnit; import org.elasticsearch.common.unit.

    2024年04月12日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包