spring boot application에서 탄력적인 검색 쿼리를 표시하는 방법
스프링 부트 어플리케이션에서 엘라스틱 검색을 시도하고 있는데 엘라스틱 검색 저장소에서 실행되는 쿼리에 대해 디버그하고 싶습니다.
시험을 마친logging.level.org.elasticsearch.index.search.slowlog.query=INFO spring.data.elasticsearch.properties.index.search.slowlog.threshold.query.info=1ms
하지만 쿼리 인쇄가 로그에 기록된 것을 보지 못했습니다.
Springboot 2.2.6 및RestHighLevelClient
, 다음과 같은 효과가 있었습니다.
logging.level.org.springframework.data.elasticsearch.client.WIRE : trace
이는 springboot-data-elastic search에도 기록되어 있습니다.
하지만 초기화를 위해 주의를 기울여야 합니다.RestHighLevelClient
문서에 명시된 것과 같은 방식으로 콩.즉, 를 사용합니다.ClientConfiguration
건축업자처음에 나는 콩을 다음과 같이 만들었습니다.new RestHighLevelClient()
효과가 없었어요예:
@Bean(destroyMethod = "close")
public RestHighLevelClient restClient() {
ClientConfiguration clientConfiguration = ClientConfiguration.builder()
.connectedTo(esHost +":" + esPort).usingSsl()
.build();
RestHighLevelClient client = RestClients.create(clientConfiguration).rest();
return client;
}
다른 답변을 시도해보았는데 스프링부트 2.2.2와 탄성검색 6.7.2에서는 작동하지 않았습니다. 아마 제가 사용해서 아래 내용이 효과가 있었던 것 같습니다.RestHighLevelClient
, 요청과 응답을 받기 위해 아래와 같은 application.properties 파일에서 apache http logging을 활성화해야 했습니다.
logging.level.org.elasticsearch.client=TRACE
logging.level.org.apache.http=TRACE
Spring Boot 2에서는 다음과 같은 방법으로 쿼리 디버그를 활성화할 수 있습니다.
logging.level.org.springframework.data.elasticsearch.core=DEBUG
그리고 생성된 로그는 다음과 같습니다.
{
"from" : 0,
"size" : 10,
"query" : {
"bool" : {
"must" : [
{
"query_string" : {
"query" : "some string",
"fields" : [
"nome^1.0"
],
"use_dis_max" : true,
"tie_breaker" : 0.0,
"default_operator" : "and",
"auto_generate_phrase_queries" : false,
"max_determinized_states" : 10000,
"enable_position_increments" : true,
"fuzziness" : "AUTO",
"fuzzy_prefix_length" : 0,
"fuzzy_max_expansions" : 50,
"phrase_slop" : 0,
"escape" : false,
"split_on_whitespace" : true,
"boost" : 1.0
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
},
"version" : true
}
안부 전합니다.
저는 다른 답변을 사용하지 못했고, 결국 다음과 같은 문제를 인식했습니다.그것이 같은 (잘못된) 방법을 가지고 있는 사람에게 도움이 되기를 바랍니다!
저는 원래 스프링 부트 관리자의 "로깅 수준 변경" 기능을 사용합니다(스프링 부트에 대한 래퍼입니다)./actuator
로그 레벨을 변경합니다.이것은 일반적인 구성 요소에는 완벽하게 작동하지만, 이상하게도 탄력적인 검색에는 작동하지 않습니다.
그래서 저는 적어야 합니다.
logging:
level:
org.springframework.data.elasticsearch.client.WIRE: TRACE
내 안에application.yml
. 그리고 전체 애플리케이션을 다시 배포해야 합니다.그러면 모든 것이 괜찮고 로그를 봅니다.
사용하고 있습니다.elasticsearchTemplate.queryForPage()
따라서 소스 코드에는 if 조건이 있습니다.
if (QUERY_LOGGER.isDebugEnabled()) {
QUERY_LOGGER.debug(requestBuilder.toString());
}
내 경우 logback-spring.xml에 다음 행을 추가하여 활성화합니다.
<logger name="org.springframework.data.elasticsearch.core.QUERY" level="DEBUG"/>
언급URL : https://stackoverflow.com/questions/42966333/how-to-show-elasticsearch-queries-in-spring-boot-application
'programing' 카테고리의 다른 글
함수에서 비동기 대기를 사용하여 비동기 함수에서 값을 반환하는 방법은 무엇입니까? (0) | 2023.10.21 |
---|---|
jQuery.val() vs.attr("value") (0) | 2023.10.21 |
강제 "자화" 방향 모드 (0) | 2023.10.21 |
.gitignore & .hgignore & svn에 따라 rsync 제외: --filter=:C와 같은 ignore (0) | 2023.10.21 |
MySQL 보기 및 인덱스 사용 (0) | 2023.10.21 |