elasticsearch调试相关
Analyze API
用途:调试分词器(Tokenizer)和分词过滤器(Token Filter)的行为。
`GET /_analyze``
GET /<index>/_analyze
1 | GET /_analyze |
Term Vectors API
Elasticsearch 的 Term Vectors API 用于获取特定文档中某个字段的词条(Term)详细信息,包括词频、位置、偏移量等,帮助开发者调试分词器行为、分析索引数据,或验证文档的词条存储是否符合预期。
- 查看词条信息:
- 词频(Term Frequency):某个词在文档中的出现次数。
- 位置(Position):词在字段中的位置(用于短语查询)。
- 偏移量(Offset):词在原始文本中的字符偏移(用于高亮显示)。
- 全局统计:词在索引中的总出现次数(
term_statistics=true时生效)。
- 调试分词器:
验证自定义分词器(Analyzer)对文本的实际处理结果(如停用词过滤、同义词扩展等)。 - 验证索引数据:
检查文档是否以预期的词条形式存储(如大小写转换、词干提取)。
GET /<index>/_termvectors/<_id>POST /_mtermvectorsPOST /<index>/_mtermvectors
1 | GET /products/_termvectors/1 |
Explain API
GET /<index>/_explain/<id>- 针对 单个文档 解释其是否匹配某个查询,并返回详细的评分计算过程(包括匹配条件、评分公式、字段匹配的 TF/IDF 值等)。
POST /<index>/_explain/<id>- 针对 单个文档 解释其是否匹配某个查询,并返回详细的评分计算过程(包括匹配条件、评分公式、字段匹配的 TF/IDF 值等)。
GET /<index>/_search?explain=true- 在搜索请求中为 命中的所有文档 返回评分解释信息。
GET /<index>/_search {"explain": true}- 在搜索请求中为 命中的所有文档 返回评分解释信息。
Profile API
Elasticsearch 的 Profile API 是用于深度分析查询执行过程的工具,它能提供查询中各个组件的详细耗时和底层执行细节,帮助开发者优化查询性能。
- 性能分析:
定位查询的瓶颈,例如哪些查询阶段(如query、fetch、script)耗时最长。 - 执行细节:
显示查询在 Lucene 底层的执行步骤(如term、range、boolean查询的具体操作)。 - 优化依据:
通过分析耗时步骤,调整查询逻辑、索引设计或参数配置(如分片策略、字段类型)。
返回的数据结构
1 | { |
启动 Profile
在 _search 请求的 URL 参数或请求体中添加 "profile": true。
1 | GET /products/_search |
Validate API
- 用途:验证查询语法是否合法,并提供错误信息。
- 语法:
1
2
3
4GET /{index}/_validate/query?explain=true
{
"query": { ... }
}