【发布时间】:2021-10-04 15:11:30
【问题描述】:
我正在尝试将查询的某些部分替换为具有特定值的变量。
例如,在我的变量 query 中,我想替换
\"level\": \"Information\"- 和
\"match\": { \"level\": \"Error\" - 分别带有变量
fieldName和变量fieldValue-
fieldName的值为"_source.level" - 和
fieldValue的值分别为"information"和"error"。
-
(不确定我是否必须创建另一个变量来保存 “错误”的第二个值,因为我想要信息和 错误。)
我遇到的问题通常是我知道你会在字符串之前添加一个$,并在你想要调用变量的地方添加一个{}。但是,当我在字符串的开头添加 $ 时,它不喜欢它并说
只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句
所以我在试图弄清楚如何将这些变量传递给我的查询变量时遇到了问题。
string jsonFromFile;
using (var reader = new StreamReader(path))
{
jsonFromFile = reader.ReadToEnd();
}
var json = JsonConvert.DeserializeObject<VirtualSupport>(jsonFromFile);
foreach (var item in json.Systems.Applications)
{
foreach (var x in item.Application)
{
foreach (var y in x.BusinessProcessSteps)
{
foreach (var z in y.BusinessProcessStep.LogDataSources)
{
var fieldName = z.LogDataSource.LogFieldsMapping.LevelField.FieldName;
var fieldValue = z.LogDataSource.LogFieldsMapping.LevelField.FieldValue;
}
}
}
}
var query = "{\"size\": 1000,\"query\": {\"bool\": {\"should\":[ {\"match\": { \"level\": \"Information\" } }, {\"match\": { \"level\": \"Error\" } } ], " +
"\"filter\": [ { \"range\": { \"@timestamp\": { \"gte\": \"2021-07-26T07:58:45.304-05:00\", \"lt\": \"2021-07-26T08:58:45.305-05:00\" } } } ]," +
"\"minimum_should_match\": 1 } } }";
我正在读取并分配 fieldname 和 fieldvalue 的 json 文件的片段。
"LogFieldsMapping": {
"IDField": { "FieldName": "_id" },
"LevelField": {
"FieldName": "_source.level",
"FieldValue": [
{ "value": "Information" },
{ "value": "Error" }
]
}
}
【问题讨论】:
标签: c# elasticsearch json.net