#spring-boot #elasticsearch #hibernate-search
Вопрос:
У меня возникла проблема с созданием службы подсветки для моего проекта с использованием платформы hibernate elasticsearch. Мне нужно добавить возможность выделять все текстовые фразы в этих полях. Когда я пытаюсь создать службу подсветки, я получаю ошибку, подобную той, которую я опубликовал здесь, т. Е. Исключение нулевого указателя. У меня есть этот код:
private JsonArray getHighlightingText(SearchSession searchSession, ConsultantSearchQuery searchQuery) {
ElasticsearchSearchResult<ConsultantSearchE> result = searchSession.search(ConsultantSearchE.class)
.extension(ElasticsearchExtension.get())
.where(f -> f.match()
.fields("documents.text",
"firstName",
"lastName",
"email",
"phone.phoneNumber",
"company.name"
)
.matching(searchQuery.getQuery()))
.requestTransformer(context -> {
JsonObject body = context.body();
body.add("query", jsonObject(query -> {
query.addProperty("match_phrase", searchQuery.getQuery());
}));
body.add("highlight", jsonObject(highlight -> {
highlight.addProperty("type", "unified");
highlight.addProperty("number_of_fragments", 3);
highlight.add("fields", jsonObject(fields -> {
fields.add("content", jsonObject(term -> { }));
}));
}));
})
.fetch(20);
JsonObject responseBody = result.responseBody();
return responseBody.getAsJsonObject("highlight")
.getAsJsonArray("fields");}
private List<JsonObject> hitProjection(SearchSession searchSession) {
return searchSession.search(ConsultantSearchE.class)
.extension(ElasticsearchExtension.get())
.select(ElasticsearchSearchProjectionFactory::jsonHit)
.where(SearchPredicateFactory::matchAll)
.fetchHits(20);
}
private static JsonObject jsonObject(Consumer<JsonObject> instructions) {
JsonObject object = new JsonObject();
instructions.accept(object);
return object;
}
Но это не работает, у меня такая ошибка:
Response: 400 'Bad Request' from 'http://localhost:9200' with body
{
"error": {
"root_cause": [
{
"type": "parsing_exception",
"reason": "[match_phrase] query malformed, no start_object after query name",
"line": 1,
"col": 26
}
],
"type": "parsing_exception",
"reason": "[match_phrase] query malformed, no start_object after query name",
"line": 1,
"col": 26
},
"status": 400
}
] with root cause
Комментарии:
1. можете ли вы предоставить запрос, который вы используете, в формате JSON ?