Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在基本搜索中遇到问题--没有结果_C#_Json_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Nest - Fatal编程技术网 elasticsearch,nest,C#,Json,elasticsearch,Nest" /> elasticsearch,nest,C#,Json,elasticsearch,Nest" />

C# 在基本搜索中遇到问题--没有结果

C# 在基本搜索中遇到问题--没有结果,c#,json,elasticsearch,nest,C#,Json,elasticsearch,Nest,我已经启动了Elasticsearch并正在运行。使用惊奇漫画中的Sense,我可以通过以下查询获得结果: GET _search { "query": { "query_string": { "query": "massa" } } } 我的c#代码,正在尝试重新创建上述代码: var node = new Uri("http://localhost:9200"); var settings = new ConnectionSettings

我已经启动了Elasticsearch并正在运行。使用惊奇漫画中的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;
var节点=新Uri(“http://localhost:9200");
var设置=新连接设置(节点).SetDefaultIndex(“mediaitems”);
var客户端=新的ElasticClient(设置);
var results=client.Search(s=>s
.Query(qs=>qs.QueryString(q=>q.Query(“massa”)));
var d=结果文件;

但不幸的是,我没有得到任何结果,在“results.Documents”中什么都没有。有什么建议吗?也许是查看生成的json的一种方法?查询索引中所有内容的最简单方法是什么?谢谢

您还可以检查嵌套原始客户端

var results = client.Raw.SearchPost("mediaitems", "stuff", new
      {
          query = new
          {
              query_string = new
              {
                      query = "massa"
              }
          }
      });

即使您使用的是
.search
,因此您的搜索结果将映射到正确的类型,您仍然需要将默认类型设置为查询的一部分

var节点=新Uri(“http://localhost:9200");
var设置=新连接设置(节点).SetDefaultIndex(“mediaitems”);
var客户端=新的ElasticClient(设置);
var results=client.Search(s=>s
.Type(“stuff”)//或.Type(typeof(stuff)),如果您已正确修饰了stuff类。
.Query(qs=>qs.QueryString(q=>q.Query(“massa”)));
var d=结果文件;
此外,您的
results
响应包含
ConnectionStatus
属性。您可以查询此属性,查看Elasticsearch的
请求
响应
,查看您的查询是否按预期执行

更新:您还可以在索引设置中设置默认类型

  var settings = new ConnectionSettings(node).SetDefualtIndex("mediaitems");
  settings.MapDefaultTypeIndices(d=>d.Add(typeof(stuff), "mediaitems");

您可以获得搜索请求URL和JSON请求正文的值,如下所示:

var requestURL = response.RequestInformation.RequestUrl;
var jsonBody = Encoding.UTF8.GetString(response.RequestInformation.Request);

您可以在
RequestInformation
中找到其他有用的属性进行调试。

您在C#code中添加了特定的
字段,但不是手写版本。请尝试删除该字段并检查。抱歉,是的,“字段”是后来添加的,无论是否包含字段,都存在相同的问题。好的,谢谢。似乎我不应该需要.Type(“东西”),但添加它确实有效,我得到了结果。我需要阅读如何正确装饰我的类。这里是关于使用属性或代码设置嵌套映射的文档。默认情况下,Search()将搜索
/{推断的{u索引}/{推断的}/\u搜索
。看见在您的示例中,您仅在
/\u search
上搜索,您可以使用
s=>s.AllIndices().AllTypes()在嵌套中指定相同的内容。指定
.Type(“stuff”)
固定
{expressed\u index}
,因此搜索将在
/{expressed\u index}/stuff/\u search上进行。这很有用,不幸我不能将其标记为有用,因为我太新了。但是,这确实返回了结果,并且能够告知我需要如何处理Paige的答案。非常感谢。