elasticsearch - 理解elasticsearch查询解析异常,拯救海牛

标签 elasticsearch

我正在尝试寻找一种方式来处理 Elasticsearch 查询解析异常,而不是像对待机器那样对待我。我想成为一个人,这意味着当我的查询中出现语法错误时,我想要一个信息丰富且简洁的消息。

是否有使这成为可能的现有服务/ gem /技术?也许它是一个解析器,您将 ES 乱码查询解析异常消息并返回给您一些(更多)有用的东西?或者它可能是一个 ES 插件,可以简单地改变解析异常的呈现方式。

我最想要的特征 -

  1. 简洁,不超过 80 个字符来总结问题,另外 200 个字符来解释如何解决问题
  2. 它准确地告诉我在查询中发生错误的位置(错误常常粗略地指导我的调试工作;如 from[-1],size[-1]: Parse Failure [Expected [START_OBJECT] under [and], but got a [START_ARRAY] in [filter]]], 模糊的引导我的注意力帮助我调试, 但它肯定能告诉我语法错误发生在哪一行或字符)
  3. 人类可读 - 它摆脱了机器友好的笨拙,如 {(;,并使用适当的英语而不是行话。

非常感谢您帮助减轻这些异常带来的认知负担。

最佳答案

我不确定这是否有帮助,但如果我有一个查询由于我不明白的原因而失败,我喜欢使用 Elasticsearch validate API .

所以对于我的查询,我会做

curl -XPOST 'localhost:9200/<index>/_validate/query/?explain=true&pretty=true -d {
     "query": {"match_all": {}}
}

它将获取查询并通过验证器运行它,如果失败,它将显示它检测到的特定错误,而不会出现任何麻烦。

希望对您有所帮助!

关于elasticsearch - 理解elasticsearch查询解析异常,拯救海牛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30872546/

相关文章:

.net - 如何通过NEST搜索ElasticSearch并过滤结果以查找自定义属性上的不同条目

java - 没有可用的节点elasticsearch

elasticsearch - 如何更新elasticsearch中的字段类型

elasticsearch - 在 Elasticsearch 中更新索引文档

elasticsearch - Elasticsearch 文档存储

elasticsearch - Spring Elastic Search 自定义字段名称

apache-spark - Spark : writeStream' can be called only on streaming Dataset/DataFrame

elasticsearch - Logstash未写入Elasticsearch

json - Elasticsearch 中的映射和查询

elasticsearch - 如何在聚合过程中过滤掉某些值?