【问题标题】:Elastic search using Java low level rest client使用 Java 低级 rest 客户端的弹性搜索
【发布时间】:2019-08-25 18:28:06
【问题描述】:

我正在尝试将我的弹性搜索 (6.6.1)、spring boot(2.1.3) 应用程序从 java 8 移动到 java 11。 以前,我使用高级 java rest 客户端来创建和搜索索引。 由于模块化高级别的客户端api存在问题(https://github.com/elastic/elasticsearch/issues/38299),我正在尝试使用低级的REST客户端,但我无法获得任何搜索结果。

请看一些代码片段 -

使用高级REST客户端创建的搜索索引

           IndexRequest indexRequest = new IndexRequest("legal3", "scee");
          IndexResponse indexResponse =  
          highlevelclient.index(indexRequest, RequestOptions.DEFAULT);

用于使用高级别的客户端搜索的查询

    this.client = new RestHighLevelClient(
            RestClient.builder(new HttpHost("localhost", 9200)));
    SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
    sourceBuilder.query(QueryBuilders.multiMatchQuery(text, “field1”));
    SearchRequest searchRequest = new SearchRequest();
    searchRequest.source(sourceBuilder);
    SearchResponse response1 = highlevelclient.search(searchRequest, RequestOptions.DEFAULT);

然后我使用低级rest客户端搜索相同的索引(使用高级rest客户端创建的索引)

        this.client = RestClient.builder(
                new HttpHost("localhost", 9200)).build();
        String query = "{\"query\":{\"match\":{\"field1\":\"" + text + "\"}}}";
        Response response = lowlevlelclient.performRequest("GET", "legal3", Collections.emptyMap(), new StringEntity(query, ContentType.APPLICATION_JSON));

但它只返回标题,没有实际数据。

{"legal3":{"aliases":{},"mappings":{"scee":{"properties”:”field1”:{“type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}}}}},"settings":{"index":{"number_of_shards":"5","blocks":{"read_only_allow_delete":"true"},"provided_name":"legal3","creation_date":"1552209921359","number_of_replicas":"1","uuid":"Y_GyoagoTIezgztuUYrlBQ","version":{"created":"6060199"}}}}}

我觉得我在设置终点(performRequest 的第二个参数)时犯了一些错误,但我找不到更多细节。

谁能给点建议。

【问题讨论】:

    标签: spring-boot elasticsearch java-11


    【解决方案1】:

    我终于找到了解决办法。正如预期的那样,端点问题(performRequest 的第二个参数)

    Response response = lowlevelclient.performRequest("GET", "/_search", Collections.emptyMap(), new StringEntity(query, ContentType.APPLICATION_JSON));
    

    现在我得到了预期的结果

    【讨论】:

    • 7.4.2 客户端不再包含该方法
    • @chomp 我从来没有使用过 6.6.1 以外的任何东西。以防万一,如果我曾经使用过它,那么我将在此处更新答案。通常,每当他们弃用一种方法时,他们必须在发行说明中给出替代解决方案
    • @nantitv 你在哪里提到索引名称?
    猜你喜欢
    • 2019-07-13
    • 2022-01-24
    • 1970-01-01
    • 2016-11-08
    • 2021-07-15
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 2019-08-19
    相关资源
    最近更新 更多