使用 validate API 验证 Elasticsearch 查询语句的合法性与解释
摘要助手
切换
SummaryGPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往订阅 💥
前往评论 💬
👀 部署教程
使用 validate API 验证 Elasticsearch 查询语句的合法性与解释
dong4j验证查询
查询语句可以变得非常复杂,特别是与不同的分析器和字段映射相结合后,就会有些难度。
validate API 可以验证一条查询语句是否合法。
1 | GET /gb/tweet/_validate/query |
以上请求的返回值告诉我们这条语句是非法的:
1 | { |
理解错误信息
想知道语句非法的具体错误信息,需要加上 explain 参数:
1 | GET /gb/tweet/_validate/query?explain <1> |
<1> explain 参数可以提供语句错误的更多详情。
很显然,我们把 query 语句的 match 与字段名位置弄反了:
1 | { |
理解查询语句
如果是合法语句的话,使用 explain 参数可以返回一个带有查询语句的可阅读描述, 可以帮助了解查询语句在 ES 中是如何执行的:
1 | GET /_validate/query?explain |
explanation 会为每一个索引返回一段描述,因为每个索引会有不同的映射关系和分析器:
1 | { |
从返回的 explanation 你会看到 match 是如何为查询字符串 “really powerful” 进行查询的, 首先,它被拆分成两个独立的词分别在 tweet 字段中进行查询。
而且,在索引 us 中这两个词为 “really” 和 “powerful”,在索引 gb 中被拆分成 “really” 和 “power”。 这是因为我们在索引 gb 中使用了 english 分析器。
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果