Elasti c Поисковый запрос не работает с Java - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть данные в формате ниже на elasti c Документ индекса поиска:

{
folder = true, lazy = true, attributes = {
    spr: r_no = 2,
    jcr: created = 2020 - 01 - 10 T06: 47: 28.449 Z,
    spr: s_id = ABCD - D - 19 - 00519,
    jcr: createdBy = admin,
    spr: j_code = aihc,
    jcr: primaryType = spr: task,
    spr: j_id = 4339,
    spr: tenant = [xyz],
    spr: p_id = AB_XYZ_4381
}, title = 67 dc4578- ac6a - 45e8 - 985 e - wsd04968214c, full_path = /67dc4578-ac6a-45e8-985e-wsd04968214c}

, когда я пытаюсь получить заголовок, используя клиент ES в java, я получаю заголовок всех записей в ответ :

public void getESSearchResponse() {
    final SearchResponse searchResponse;
    RestHighLevelClient restHighLevelClient = null;
    try {
        restHighLevelClient = new RestHighLevelClient(
        RestClient.builder(
            new HttpHost(
                "host",
                port,
                "http")));

        final BoolQueryBuilder query =
                QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("attributes.spr:s_id", "ABCD-D-19-00519")).must(QueryBuilders.matchQuery("folder", true));

        System.out.println("query : "+query.toString());
        final SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        searchSourceBuilder.query(query);
        searchSourceBuilder.size(10000); // Number of records return in searchHit, default is 10
                                         // and
                                         // max is 10000
        final SearchRequest searchRequest = new SearchRequest();
        searchRequest.source(searchSourceBuilder);
        searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        final SearchHits hits = searchResponse.getHits();
        System.out.println("ES Search Hits size : " + hits.totalHits);
        final Iterator<SearchHit> iterator = hits.iterator();
        final Set<String> title= new TreeSet<>(); // To avoid duplicate and null values
        while (iterator.hasNext()) {
            final SearchHit searchHit = iterator.next();
            final Map<String, Object> source = searchHit.getSourceAsMap();
            if (source.containsKey("title")) {
                title.add(source.get("title").toString());
            }
        }
        System.out.println("Fetched title ids size: " + title.size());
        System.out.println("title:"+title);
    } catch (final IOException ioe) {
        System.out.println("Error in getESSearchResponse() method : "+ioe);
    }finally {
        try {
            restHighLevelClient.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

Пожалуйста, найдите ниже сгенерированный запрос:

query : {
"bool" : {
"must" : [
  {
    "match" : {
      "attributes.spr:s_id" : {
        "query" : "ABCD-D-19-00519",
        "operator" : "OR",
        "prefix_length" : 0,
        "max_expansions" : 50,
        "fuzzy_transpositions" : true,
        "lenient" : false,
        "zero_terms_query" : "NONE",
        "auto_generate_synonyms_phrase_query" : true,
        "boost" : 1.0
      }
    }
  },
  {
    "match" : {
      "folder" : {
        "query" : true,
        "operator" : "OR",
        "prefix_length" : 0,
        "max_expansions" : 50,
        "fuzzy_transpositions" : true,
        "lenient" : false,
        "zero_terms_query" : "NONE",
        "auto_generate_synonyms_phrase_query" : true,
        "boost" : 1.0
      }
    }
  }
  ],
  "adjust_pure_negative" : true,
  "boost" : 1.0
 }
}

Пожалуйста, помогите! Как получить c значение заголовка для конкретного s_id, поэтому не следует записывать все записи из elasti c поискового индекса.

...