代码之家  ›  专栏  ›  技术社区  ›  Alex

从json API返回一个链接,该链接检索OpenSearch仪表盘中包含完全匹配的所有文档

  •  0
  • Alex  · 技术社区  · 4 年前

    我试图在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\" 。仪表板不再将其视为精确匹配查询。因此,在上面的示例中,所有文件都可能被返回,其中一些文件的_分数较低。

    我去过 dql 医生,但我在那里什么也没找到。有没有其他查询方法来获取我需要的数据?

    构建OpenSearch仪表盘url本身不是问题。

    0 回复  |  直到 4 年前
        1
  •  0
  •   Alex    4 年前

    好的,这不是OpenSearch仪表盘的问题,而是编码问题。在OpenSearch仪表板中,可能还有另一种查询信息的方法,但这不是必需的。

    简而言之,URL被编码为处理特殊字符。可以找到编码列表 here .

    我所需要做的就是用编码字符串替换双引号及其转义符号。根据下面的表格 %22 从…起 "abc" %22abc%22 .