У меня есть данные в формате ниже на 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 поискового индекса.