У меня есть требование для реализации поисковой системы. Подобно поиску Google / Yahoo, в компоненте поиска, если какой-либо ключ введен, он должен найти совпадения и отобразиться. Для этого требования я создал Spring Boot Project, интегрированный с упругим поиском.
Используя logstash, я создал индекс для своей базы данных Oracle в Elastic search., Используя приведенный ниже код, я могу получать записи на основе идентификатора индекса Elastic Search.
private final String INDEX = "bookdata";
private final String TYPE = "books";
public Map<String, Object> getBookById(String id){
GetRequest getRequest = new GetRequest(INDEX, TYPE, id);
GetResponse getResponse = null;
try {
getResponse = restHighLevelClient.get(getRequest);
} catch (java.io.IOException e){
e.getLocalizedMessage();
}
Map<String, Object> sourceAsMap = getResponse.getSourceAsMap();
return sourceAsMap;
}
Приведенный выше код работает нормально и может получить книгу на основе ID
. Но я должен Автор или Название книги.
Пожалуйста, найдите мои проиндексированные документы в Elastic search от Kibana
{
"took": 34,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 3,
"max_score": 1,
"hits": [
{
"_index": "bookdata",
"_type": "books",
"_id": "72c58f1a-7bfe-41be-a7f4-ee0aca3f4cf4", //able to search by ID
"_score": 1,
"_source": {
"id": "72c58f1a-7bfe-41be-a7f4-ee0aca3f4cf4",
"title": "Java Always", // want to search by Title
"author": "JournalDev", // or want to search by author
"price": 99.1
}
}
}
Не очень уверен, как можно в поиске по автору или названию книги.