在Elasticsearch查询中加入注释是否可行?

18

在Elasticsearch查询JSON中,是否可以添加注释?我希望能够向查询中添加一些额外的文本,以便人类可读但被Elasticsearch忽略。

例如,如果我有以下查询:

{ "query": { "match_all": {} } }

我希望能够添加评论,可能像这样:

{ "query": { "match_all": {} }, "comment": "This query matches all documents." }

我们也欢迎使用hacky workaround(例如查询子句对结果没有影响)。


有趣的问题,但我在想它可能有什么用途? 如果您正在使用Java,则可以将QueryBuilder对象和String封装到一个单独的对象中。 - Animesh Pandey
您可以将这样的字段添加到映射中,但可能无法添加到查询中!。 - Animesh Pandey
2
@AnimeshPandey 我想要为每个查询添加一些关于查询在我的应用程序中来自哪里的信息。这样,当我查看慢日志时,就很容易确定慢查询来自哪里。我受到了 Marginalia Ruby gem 的启发,该 gem 为 SQL 查询实现了类似的行为。 - Nate Sullivan
3个回答

10

似乎Elasticsearch允许在JSON中使用JavaScript注释(/* *///),尽管JSON标准不支持注释。所以这是另一个选项。


我使用这种方法来记录我的应用程序源中的查询和映射,因此这种方法非常有帮助。 - gimix
虽然这个方法可行,但请注意它并不是一个显式的功能。因此,您不应该在此基础上构建生产功能。引用来自elasticsearch开发人员的2017年回答我不会认为Elasticsearch允许在JSON请求中使用注释。正如您提到的,JSON规范不允许注释,我很惊讶它在您的测试中能够工作。这不是我们测试过的,也不是我们明确支持的,所以它随时可能停止工作。 - buddemat

7

让这个工作的一个解决方案是使用命名查询,即每个查询都可以被命名。

{
  "query": {
    "match_all": {
      "_name": "This query matches all documents."
    }
  }
}

我们应该如何对JSON映射进行注释? - a.k

3
通过插入# [井号],您可以在控制台中对Elasticsearch查询进行注释。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接