【发布时间】:2020-12-07 11:43:37
【问题描述】:
我正在尝试编写一个 C# 方法来获取控制器的 queryString 并将其转换为 ElasticSearch 查询,如下所示:
public QueryContainerDescriptor<T> Convert<T> (IQueryCollection query) where T: class
{
var selector = new QueryContainerDescriptor<T>();
List<QueryContainer> Must = new List<QueryContainer>();
foreach(var key in query.keys)
{
string value = query[key];
var match = new MatchQuery { Field = $"{key}.keyword", Query = value };
list.Add(match)
}
selector.Bool(q => q.Must(Must.ToArray()));
return selector;
}
它按预期工作,但如果我传递带有反斜杠的 queryString 值,例如:
http://localhost:5000/api/indexData?user=ESKA\\USER
应该转换成这个查询:
{ "bool": { "must": [ { "match" : { "user.keyword": "ESKA\\USER" } } ] }
但 ElasticSearch 将不会返回任何内容,因为查询的值将是:ESKA\\\\USER,带有 4 个反斜杠,例如:
{ "bool": { "must": [ { "match" : { "user.keyword": "ESKA\\\\USER" } } ] }
我该如何解决这个问题?
【问题讨论】:
标签: c# .net string elasticsearch nest