我正在将Nest 6.2与ES 6.6一起使用
我有以下运行良好的代码:
var response = elasticClient.Search<PropertyRecord>(s => s
.Query(q => q.Terms(
c => c
.Field(f => f.property_id_orig)
.Terms(listOfPropertyIds) // a list of 20 ids say...
))
.From(0)
.Take(100) // just pull up to a 100...
);
if (!response.IsValid)
throw new Exception(response.ServerError.Error.Reason);
return response.Documents;
但是我知道基础查询存在问题,因为返回了索引中的所有文档。因此,我希望能够看到由lambda表达式生成的原始Json,以便可以看到在Head插件或Fiddler等中运行的结果。
如果我使用SearchRequest对象并将其传递给Search方法,那么我能够看到Query Json吗?
var request = new SearchRequest
{
// and build equivalent query here
};
我在使用SearchRequest方法构建相应查询时遇到了麻烦,无法找到说明如何执行此操作的示例。
有人知道吗?
答案 0 :(得分:1)
您可以使用SerializeToString
extension method
var client = new ElasticClient();
var listOfPropertyIds = new [] { 1, 2, 3 };
// pull the descriptor out of the client API call
var searchDescriptor = new SearchDescriptor<PropertyRecord>()
.Query(q => q.Terms(
c => c
.Field(f => f.property_id_orig)
.Terms(listOfPropertyIds) // a list of 20 ids say...
))
.From(0)
.Take(100);
var json = client.RequestResponseSerializer.SerializeToString(searchDescriptor, SerializationFormatting.Indented);
Console.WriteLine(json);
产生
{
"from": 0,
"query": {
"terms": {
"property_id_orig": [
1,
2,
3
]
}
},
"size": 100
}