gpt4 book ai didi

elasticsearch - 为什么 Kibana 仪表板定义在存储到 ElasticSearch 中时会被转义

转载 作者:行者123 更新时间:2023-11-29 02:57:14 24 4
gpt4 key购买 nike

我想使用 ElasticSearch 共享 Kibana 仪表板定义,但我发现定义仪表板的部分在 ES 文档中被转义

{
"user" : "guest",
"group" : "guest",
"title": "Test",
"dashboard": "{\"title\":\"Hardware Monitor\"}"
}

这是为什么呢?它使手动编辑仪表板定义变得不愉快且容易出错。

最佳答案

查看 JSON 文档的顶层。它是一堆键和值,都用引号引起来,例如

"user" : "guest"

现在,他们将描述仪表板的文档作为“仪表板”键的值。如果它是一个简单的字符串,它可能看起来像这样:

"dashboard" : "Good morning!"

但您可以看到它不是一个简单的文档 - 仪表板是用它自己的 JSON 文档定义的。

"title" : "Hardware Monitor"

请注意,此文档只是另一组键和值,它们都在引号中,就像之前一样。

现在,如果您将它们简单地放在一起,您会得到:

"dashboard" : ""title": "Hardware Monitor""

JSON 解析器正在寻找引号中的键值,所以开头看起来像这样:

"dashboard" : ""

在那之后你剩下一堆非 JSON。

对于引号,您真的不知道它是打开一个新的引号还是关闭一个之前的引号,因此解析器需要您的一些帮助。

这种帮助以转义(删除值)内部引号的形式出现,如下所示:

"name" : "William Royce \"Boz\" Scaggs"

现在解析器可以轻松判断值的开始和结束位置。

如果您正在编写代码,在一对双引号内使用单引号(反之亦然)是一个常见的技巧,如下所示:

grep '"Lido Shuffle"' file

将在给定文件中查找字符串 Lido Shuffle - 用双引号括起来。

在像 Kibana 这样处理随机人工输入时,这并不总是有效。用户可能想将他们的仪表板命名为“Don't Look Here”或“8” of Rain',因此引号很快就会变得奇怪。转义引号是一种通用的处理方式。

希望对您有所帮助。

关于elasticsearch - 为什么 Kibana 仪表板定义在存储到 ElasticSearch 中时会被转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23473545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com