控制台打印日志:
index-name: local_es_staff_info202404021352
DSL:{“size”:10000,“query”:{“bool”:{“must”:[{“terms”:{“emplId”:[“001756”,“000043”,“004193”],“boost”:1.0}}],“adjust_pure_negative”:true,“boost”:1.0}},“track_total_hits”:2147483647}
esStaffMapper 是与 Elasticsearch 数据库交互的 Mapper。
Elasticsearch 使用自己的查询语言 DSL(Domain Specific Language),这是一种 JSON 格式的查询语言。DSL 查询比传统 SQL 更符合 Elasticsearch 的分布式、全文搜索引擎的特性。
例如,在日志中:
{"size": 10000,"query": {"bool": {"must": [{"terms": {"emplId": ["001756", "000043", "004193"],"boost": 1.0}}],"adjust_pure_negative": true,"boost": 1.0}},"track_total_hits": 2147483647}
这段 JSON 表示一个 Elasticsearch 查询,其中:terms 查询用于匹配 emplId 字段的特定值。boost 用于提升查询的相关性。track_total_hits 用于控制结果的最大计数。为什么打印的是 DSL,而不是 SQL?MyBatis-Plus 不是直接用于 Elasticsearch。它主要用于关系型数据库(如 MySQL、PostgreSQL),而在使用的是与 Elasticsearch 交互的框架或库(如 Spring Data Elasticsearch 或其他自定义的 Elasticsearch Mapper)。因此,查询语句是基于 Elasticsearch 的查询 DSL,而不是 SQL。
如何调试或查看 Elasticsearch 的查询
如果想调试或查看 Elasticsearch 的查询执行过程,可以使用以下方式:
查看日志:Elasticsearch 提供了丰富的日志输出,可以在 Elasticsearch 的配置中设置日志级别为 DEBUG 或 TRACE,从而查看查询的执行细节。查看请求:如果使用的是 Spring Data Elasticsearch,可以启用 org.springframework.data.elasticsearch.core 的日志来查看查询请求。还可以在代码中手动查看或打印出构建的 Elasticsearch 请求体。查看 Elasticsearch 请求:如果有访问 Elasticsearch 的 REST API,可以直接将 DSL 查询通过 HTTP 请求发送到 Elasticsearch 集群,然后查看返回的响应结果。比如通过 curl 或 Postman 发起查询请求。