'Springboot JPA ElasticSearch search is faster than ElasticsearchRestTemplate search
So I just compared the time for doing 3 calls to the remote ElasticSearch server using JPA vs 1 call to the remote ElasticSearch server using ElasticsearchRestTemplate. I saw that the 3 calls take 2 seconds and the call using ElasticsearchRestTemplate takes 3 seconds. Why?
For the call to the server using JPA I have an ElasticSearchRepository like this:
public interface ScResultsRepository extends ElasticsearchRepository<ScResults, String> {
List<ScResults> findAllBySenderAndDataStartsWithOrderByTimestampAsc(String sender, String dataStartWith);
}
And I call the server like this:
List<ScResults> results1 = scResultsRepository.findAllBySenderAndDataStartsWithOrderByTimestampAsc(
"sendervalue", encodedString1);
List<ScResults> results2 = scResultsRepository.findAllBySenderAndDataStartsWithOrderByTimestampAsc(
"sendervalue", encodedString2);
List<ScResults> results3 = scResultsRepository.findAllBySenderAndDataStartsWithOrderByTimestampAsc(
"sendervalue", encodedString3);
To call the ElasticSearch server using ElasticsearchRestTemplate:
QueryBuilder prefixQueryBuilderAddLiquidity = QueryBuilders.prefixQuery("data.keyword", encodedString1);
QueryBuilder prefixQueryBuilderDeleteLiquidity = QueryBuilders.prefixQuery("data.keyword", encodedString2);
QueryBuilder prefixQueryBuilderExitFarm = QueryBuilders.prefixQuery("data.keyword", encodedString3);
QueryBuilder dataBoolQuery = QueryBuilders.boolQuery()
.should(prefixQueryBuilderAddLiquidity)
.should(prefixQueryBuilderDeleteLiquidity)
.should(prefixQueryBuilderExitFarm);
QueryBuilder boolQuery = QueryBuilders.boolQuery()
.filter(QueryBuilders.termQuery("sender.keyword", "sendervalue"))
.filter(dataBoolQuery);
Query searchQuery = new NativeSearchQueryBuilder()
.withFilter(boolQuery)
.withSorts(SortBuilders.fieldSort("timestamp").order(SortOrder.ASC))
.build();
SearchHits<ScResults> resultsSearchHits = elasticsearchTemplate.search(searchQuery, ScResults.class);
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
