为什么重定向到硬Kibana URL有效,但在动态创建URL时无效



我正在尝试生成连接URL,以便从主应用程序转到Kibana中的特定查询。

为了做到这一点,我昨天已经在论坛上问了以下问题:上一个问题

从那以后,我有了一些进步,但我现在的处境我不理解。

如果我通过直接在字符串中写入url来传递url,则重定向到正确的索引和正确的会话。

但是,如果我创建相同的字符串,但动态地关联每个id,那么kibana会将我重定向到查询中没有任何数据的基本索引。

代码中的硬编码URL:

const URL_ROOT_KIBANA_DISCOVER_TEST = "http://HOST_NAME:5601/app/kibana#/discover?_g=(refreshInterval:(pause:!t,value:0),time:(from:now-15M,to:now))&_a=(columns:!(_source),index:ab4ed2e0-fe84-11eb-8151-69b4ba83c682,interval:auto,query:(language:kuery,query:'FIELD_AGGREGATE_NAME:FIELD_VALUE%20and%20_id:" +'"ID_TO_RESEARCH"' + "'),sort:!(!('@timestamp',desc)))";
function createKibanaUrl(): string {
//This method by hard-coding the url works well
let testKibana = URL_ROOT_KIBANA_DISCOVER_TEST;
return testKibana;
}

URL被分配给一个按钮中包含的锚标记的href,通过按下按钮,我被发送回正确的会话。

const TEMPORARY_INDEX = "ab4ed2e0-fe84-11eb-8151-69b4ba83c682";
const URL_ROOT_KIBANA_DISCOVER = "http://HOST_NAME:5601/app/kibana#/discover?_g=(refreshInterval:(pause:!t,value:0),time:(from:now-";
const diffDays = (selectedDate: Date) => Math.ceil(Math.abs(new Date().getTime() - new Date(selectedDate).getTime()) / (1000 * 60 * 60 * 24));
const diffMonths = (selectedDate: Date) => new Date(selectedDate).getMonth() - new Date().getMonth() + 12 * (new Date(selectedDate).getFullYear() - new Date().getFullYear());
const diffYears = (selectedDate: Date) => new Date(selectedDate).getFullYear() - new Date().getFullYear();
function createKibanaUrl(timestamp: Date, idSession: string): string {
let kibanaUrl: string = URL_ROOT_KIBANA_DISCOVER;
const timeSlotInDays = diffDays(timestamp);
const timeSlotInMonths = diffMonths(timestamp);
const timeSlotInYears = diffYears(timestamp);
if (timeSlotInDays <= 30) {
kibanaUrl = kibanaUrl + timeSlotInDays.toString() + "d,to:now))";
} else if ( timeSlotInDays > 30 && timeSlotInDays < 365) {
kibanaUrl = kibanaUrl + timeSlotInMonths.toString() + "M,to:now))";
} else if (timeSlotInDays >= 365) {
kibanaUrl = kibanaUrl + timeSlotInYears.toString() + "y,to:now))";
}
kibanaUrl = kibanaUrl + "&_a=(columns:!(_source),index:" + TEMPORARY_INDEX + ",interval:auto,query:(language:kuery,query:'FIELD_AGGREGATE_NAME:" + "FIELD_VALUE" + "%20and%20_id:" + '"' + idSession + '"' + "'),sort:!(!('@timestamp',desc))"
return kibanaUrl;
}

使用这种方法,我会返回到我公司Kibana Discover应用程序的主页,我分配的url会被删除,然后在Kibana连接开始时被替换。

能解释这个问题吗

很抱歉给您带来不便,我刚刚意识到我忘记了动态生成的url 末尾的括号

最新更新