我正在尝试使用QueryDescriptor的.Raw方法在我的查询中添加自定义查询部分:
var dmaxPrice = maxPrice.HasValue ? (double?)maxPrice.Value : 100000d;
var dminPrice = minPrice.HasValue ? (double?)minPrice.Value : 0d;
mustTerms.Add(mt => mt.Raw(string.Format(CultureInfo.InvariantCulture,
"{{ \"range\": {{ \"price\": {{ \"gte\": {0}, \"lte\": {1} }} }} }}", dminPrice, dmaxPrice)));
此代码生成查询:
{
"query": {
"function_score": {
"functions": [
{
"linear": {
"createDate": {
"origin": "2015-03-16T14:02:37.4393456Z",
"scale": "1d",
"decay": 0.5
}
}
}
],
"query": {
"bool": {
"must": [
{}
]
}
}
}
}
}
正如你在这里看到的,Nest放置一个空的json而不是我的查询。为什么是这样?我怎样才能让Nest使用我的查询而不是这个空的json?
注意:我使用的是.Raw,因为当我使用.Range时,Nest不会正确呈现查询的边界。我问了另一个问题:Nest renders range boundaries as string instead of double