当前位置: 首页 > 知识库问答 >
问题:

如何在Spring data elasticsearch中启用查询日志记录

潘驰
2023-03-14

我使用spring-data-elasticsearch框架从elasticsearch服务器获取查询结果,java代码如下:

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);

然而,我如何知道发送到elasticssearch服务器的原始http查询?如何启用日志记录,我尝试添加log4j,但spring数据elasticsearch似乎没有记录查询。

共有3个答案

何琨
2023-03-14

如果您使用的是spring boot,您可以在应用程序中设置以下内容。属性:

logging.level.org.elasticsearch.index.search.slowlog.query=INFO
spring.data.elasticsearch.properties.index.search.slowlog.threshold.query.info=1ms
湛骏祥
2023-03-14

这是一个相当古老的,但我仍然想分享的解决方案,为我工作。要记录通过存储库执行的Spring数据Elasticsearch查询,需要为包org启用日志记录。springframework。数据elasticsearch。核心* ,例如:

logging:
  level:
    org:
      springframework:
        data:
          elasticsearch:
            core: DEBUG

之后,查询将出现在日志中:

{
  "from" : 0,
  "size" : 1,
  "query" : {
    "bool" : {
      "should" : [ {
        "query_string" : {
          "query" : "John Doe",
          "fields" : [ "entityName" ],
          "default_operator" : "and"
        }
      }, {
        "query_string" : {
          "query" : "John Doe",
          "fields" : [ "alias" ],
          "default_operator" : "and"
        }
      } ]
    }
  },
  "post_filter" : {
    "bool" : { }
  }
}

人们会期待一个类似于JPA的优雅解决方案,但它似乎并不简单存在。

使用Spring Boot 1.4.0和Spring Data Elasticsearch 1.7.3进行了测试。

杜英范
2023-03-14

在翻阅了spring数据代码后,我发现了这个名为“tracer”(名称不是很独特)的有用的小记录器

通过设置以下application.properties

logging.level.tracer=TRACE

它将打印出请求的完整curl语句以及来自Elasticsearch的完整JSON响应。

 类似资料:
  • 问题内容: 我使用spring-data-elasticsearch框架从elasticsearch服务器获取查询结果,如下所示的Java代码: 虽然我怎么知道发送到elasticssearch服务器的原始http查询?我如何启用日志记录,我尝试添加log4j,但是似乎spring-data- elasticsearch没有记录查询。 问题答案: 我没有针对Spring Data Elastics

  • 我已经搜索了一段时间,如何记录在“laravel/framework”中执行的sql查询:“5.0.*” 但是我发现的一切都是关于版本4的,还没有找到任何类似于这样的5.0的工作解决方案:在Laravel3/4中执行查询,以及如何在Laravel5中执行查询?DB::getQueryLog返回空数组和http://laravelsnippets.com/snippets/log-db-querie

  • 问题内容: 如何启用MySQL功能,该功能记录从客户端收到的每个SQL查询语句以及该查询语句提交的时间?我可以在phpmyadmin或NaviCat中做到吗?如何分析日志? 问题答案: 首先, 请记住,此日志文件在繁忙的服务器上可能会变得非常大。 对于mysql <5.1.29: 要启用查询日志,把这个在节 另外,从MySQL控制台启用它 见http://dev.mysql.com/doc/ref

  • 我想调试ffmpeg。我添加以下代码来打印日志: 或 但它不能工作。没有任何调试信息。 然后启用调试生成选项: 它不能工作。 我确信我添加跟踪的地方会被执行。 我只想打印一些简单的信息,怎么做?

  • 我正在为日志创建一个Spring Bootjar。我在我的主要spring boot项目中添加了这个依赖项。我可以在主项目的控制台中获取日志。但是没有登录到文件中。 我在文件中添加了以下application.yml 谁能帮我一下吗。提前谢谢!

  • 问题内容: 我正在使用Oracle 11g标准版。 我想将用户正在执行的所有SQL查询记录到表中。 如何才能做到这一点? 问题答案: 如果您使用的是现代版本的数据库(9i或更高版本),并且您拥有企业版许可证,则可以使用细粒度审核。它使我们能够通过已定义的策略以非常低的粒度审核用户查询。 要捕获SQL文本并绑定变量,您需要在添加FGA策略时适当设置AUDIT_TRAIL参数。 了解更多。 “我使用的