使用查询dsl进行嵌套时的类型转换问题

时间:2013-05-21 23:45:26

标签: elasticsearch nest

var products =
                this.productClient.Search<ProductSummaryModel>(s => s.From(startIndex).Size(pageSize).Query(q =>
                    {
                        QueryDescriptor<ProductSummaryModel> query = null;
                        if (productDetails.IsVisible.HasValue)
                        {
                            var productStatus = productDetails.IsVisible.Value
                                                    ? Constants.ProductStatus.Visible
                                                    : Constants.ProductStatus.Active;
                            query &= query.Term(p => p.Status, productStatus.ToString());
                        }
                        else
                        {
                            query &= !q.Term(p => p.Status, Constants.ProductStatus.Deleted.ToString());
                        }

                        return query;
                    }));

我收到以下错误。

无法将类型'Nest.BaseQuery'隐式转换为'Nest.QueryDescriptor'。存在显式转换(您是否错过了演员?)

无法将类型'Nest.BaseQuery'隐式转换为'Nest.QueryDescriptor'。存在显式转换(您是否错过了演员?)

无法将lambda表达式转换为'Nest.SearchDescriptor'类型,因为它不是委托类型

无法将lambda表达式转换为'Nest.BaseQuery'类型,因为它不是委托类型

我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

更改此行:

QueryDescriptor<ProductSummaryModel> query = null;

BaseQuery query = null;

文档显然是错误的,这将尽快更新!