我试图在JSON API中返回OpenSearch仪表盘链接。这将导致仪表板查询返回索引中包含与某个值完全匹配的所有文档。让我使用以下示例进行演示:
// Query value 'abc ' // Document A { "field_a": "abc" } // Document B { "field_b": "abcd" } // Document C { "field_a": "ab" }
我希望我的查询返回文档A和B,但不返回文档C。
基本上,我可以在OpenSearch仪表板中通过使用双引号包装查询值来实现这一点- "abc" 但是,当链接包含在JSON文件中时,这是一个问题,因为它随后会转义到 \"abc\" 。仪表板不再将其视为精确匹配查询。因此,在上面的示例中,所有文件都可能被返回,其中一些文件的_分数较低。
"abc"
\"abc\"
我去过 dql 医生,但我在那里什么也没找到。有没有其他查询方法来获取我需要的数据?
构建OpenSearch仪表盘url本身不是问题。
好的,这不是OpenSearch仪表盘的问题,而是编码问题。在OpenSearch仪表板中,可能还有另一种查询信息的方法,但这不是必需的。
简而言之,URL被编码为处理特殊字符。可以找到编码列表 here .
我所需要做的就是用编码字符串替换双引号及其转义符号。根据下面的表格 %22 从…起 "abc" 到 %22abc%22 .
%22
%22abc%22