ElasticSearch和NEST查询问题

时间:2014-02-13 00:31:49

标签: c# .net elasticsearch nest

解决: URI不正确。是“h || p://#.#.#.#/:9200”,应该是“h || p://#.#.#.#:9200”。这导致API将端口号更改为80.令人惊讶的是,API实际上能够使用错误的端口号连接到ElasticSearch实例。

我是NEST和ElasticSearch的新手,并尝试在NEST中组合一个简单的MatchAll查询。

当我从Sense执行MatchAll时

POST /movies/movie/_search
{
  "query": {
    "match_all": {}
  }
}

我获得了电影索引中的所有电影对象。

但是当我尝试NEST查询时

var result = client.Search(s => s.Type("movie").MatchAll());

我一无所获。尝试将返回类型设置为电影类,但仍然没有结果。

    public class Movie
   {
      public string title { get; set; }
      public string director { get; set; }
      public int year { get; set; }
      public List<string> genres { get; set; }
   }

还根据此回复尝试了.AllIndices()和/或.AllTypes() Searching an elasticsearch index with NEST yields no results

有什么想法吗?

编辑: 下面是连接字符串设置默认索引。

ConnectionSettings connection = new ConnectionSettings(uri).UsePrettyResponses().SetDefaultIndex("movies");

1 个答案:

答案 0 :(得分:1)

您必须检查IsValid上的result以查看呼叫是否成功。

result.ConnectionStatus将包含您确定错误所需的所有信息。

如果您想要抛出异常,可以通过调用:

启用它
.SetConnectionStatusHandler(c=> { 
    if (!c.Success)
        throw new Exception(c.ToString());
})

ConnectionSettings

ConnectionStatus对象上调用ToString以人类可读的形式打印所有请求和响应详细信息。