How to enable query logging in Spring -data-elasticsearch

I use spring -data-elasticsearch framework to get the result of a request from elasticsearch server, the java code looks like this:

SearchQuery searchQuery = new NativeSearchQueryBuilder() .withQuery(matchAllQuery()).withSearchType(SearchType.COUNT) .addAggregation(new MinBuilder("min_createDate").field("createDate")) .build(); List<Entity> list = template.queryForList(searchQuery, Entity.class); 

How can I find out the raw HTTP request sent to elasticssearch server? How to enable logging, I tried adding log4j, but it looks like spring -data-elasticsearch is not logging the request.

+5
source share
3 answers

I have no answer for Spring Data Elasticsearch, but in ES itself you can increase the default settings for slow query logging and view all the queries in the slow log. Read more about the slow magazine here .

To change thresholds, use the following command:

 PUT /_settings { "index.search.slowlog.threshold.query.info": "1ms" } 

1ms is the smallest value you can set.

+5
source

If you use spring boot, you can set the following in your application.properties application:

 logging.level.org.elasticsearch.index.search.slowlog.query=INFO spring.data.elasticsearch.properties.index.search.slowlog.threshold.query.info=1ms 
+8
source

I ran into the same problem. In ElasticsearchTemplate, only a few methods have a log debugging level, for example:

 public <T> Page<T> queryForPage(CriteriaQuery criteriaQuery, Class<T> clazz) { QueryBuilder elasticsearchQuery = new CriteriaQueryProcessor().createQueryFromCriteria(criteriaQuery.getCriteria()); QueryBuilder elasticsearchFilter = new CriteriaFilterProcessor().createFilterFromCriteria(criteriaQuery.getCriteria()); SearchRequestBuilder searchRequestBuilder = prepareSearch(criteriaQuery, clazz); if (elasticsearchQuery != null) { searchRequestBuilder.setQuery(elasticsearchQuery); } else { searchRequestBuilder.setQuery(QueryBuilders.matchAllQuery()); } if (criteriaQuery.getMinScore() > 0) { searchRequestBuilder.setMinScore(criteriaQuery.getMinScore()); } if (elasticsearchFilter != null) searchRequestBuilder.setPostFilter(elasticsearchFilter); if (logger.isDebugEnabled()) { logger.debug("doSearch query:\n" + searchRequestBuilder.toString()); } SearchResponse response = getSearchResponse(searchRequestBuilder .execute()); return resultsMapper.mapResults(response, clazz, criteriaQuery.getPageable()); } 
+1
source

All Articles