我是弹性新手,我们正在使用NEST(elasticsearch官方dotnet驱动程序)5.5版本,它在查询和过滤器方面运行良好,但是在聚合方面我遇到了一个问题。
我的github中的示例应用here
要求是在包含Persons对象列表的可用索引(People)中获取不同的名字列表(作为示例)。
对象类是这样的:
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public List<string> Skills { get; set; }
public Dictionary<string, string> Others { get; set; }
public Dictionary<string, object> OthersObject { get; set; }
}
我正在尝试实施“条款聚合”,即使在简单的情况下它也无法运行:(docs available here)
var result = _client.Search<Person>(s => s
.Size(0)
.Aggregations(a => a
.Terms("firstnames", t => t.Field(f => f.FirstName))
)
.Query(q => q
.MatchAll()
)
);
执行查询后,结果状态无效,调试信息中出现以下错误:
根据POST上的失败低级别调用构建无效的NEST响应:/ people / person / _search 此API调用的审计跟踪: - BadResponse:Node:http://127.0.0.1:9200/ Took:00:00:00.6674180 ServerError:ServerError:400Type:search_phase_execution_exception原因:“所有分片都失败”
不幸的是,这就是我所犯的错误。任何关于如何进行的想法都是受欢迎的。