我已启动并运行Elasticsearch。在Marvel中使用Sense,我可以通过此查询获得结果:
GET _search
{
"query": {
"query_string": {
"query": "massa"
}
}
}
我的c#代码,尝试重新创建以上内容:
var node = new Uri("http://localhost:9200");
var settings = new ConnectionSettings(node).SetDefaultIndex("mediaitems");
var client = new ElasticClient(settings);
var results = client.Search<stuff>(s => s
.Query(qs => qs.QueryString(q => q.Query("massa"))));
var d = results.Documents;
但不幸的是,我没有得到任何结果,“results.Documents”中没有任何结果。有什么建议?也许有办法看到生成的json?查询索引中的所有内容的最简单方法是什么?谢谢!
答案 0 :(得分:2)
即使您的搜索结果将使用.Search<stuff>
映射到正确的类型,您仍需要将默认类型设置为查询的一部分。
var node = new Uri("http://localhost:9200");
var settings = new ConnectionSettings(node).SetDefaultIndex("mediaitems");
var client = new ElasticClient(settings);
var results = client.Search<stuff>(s => s
.Type("stuff") //or .Type(typeof(stuff)) if you have decorated your stuff class correctly.
.Query(qs => qs.QueryString(q => q.Query("massa"))));
var d = results.Documents;
此外,您的results
响应包含ConnectionStatus
属性。您可以查询此属性以查看Elasticsearch的{{1}}和Request
,以查看您的查询是否按预期执行。
更新:您也可以设置默认类型的索引设置。
Response
答案 1 :(得分:1)
您还可以检查嵌套原始客户端
var results = client.Raw.SearchPost("mediaitems", "stuff", new
{
query = new
{
query_string = new
{
query = "massa"
}
}
});
答案 2 :(得分:0)
您可以获取搜索请求URL和JSON请求正文的值,如下所示:
var requestURL = response.RequestInformation.RequestUrl;
var jsonBody = Encoding.UTF8.GetString(response.RequestInformation.Request);
您可以在RequestInformation
中找到其他有用的属性以进行调试。