在ElasticSearch NEST客户端中实现Sql案例语句



我正在为.NET开发Elasticsearch NEST客户端。我必须在ES.中实现CASE语句quivaleitn查询

CASE 
WHEN [CompanyId] <> 1 AND VisibilityId=1 AND [Publish] = 1 AND StatusId = 1 THEN 1
WHEN [OrganizationId] = 1 THEN 1 
ELSE 0 
END = 1

很明显,我不知道该怎么做。过去两天我一直在预订,但一无所获。

它可以和术语过滤器一起使用吗,就像我在前面的行中所做的那样:

new FilterDescriptor<MyClass>()
                                .Term("OrganizationId", 1)

我通过将Bool QueryOr Filter组合为:来实现它

new FilterDescriptor<ListingViewDTO>()
        .Or(fo => fo.Bool(b => b.Must(c => c.And(
                fs => !fs.Term("OrganizationId", compositeFilter.OrganizationId),
                fs => fs.Query(q => q.Fuzzy(n => n.OnField("ListingAttributeDTO.AttributeName").Value("ListingPublish"))),
                fs => fs.Query(q => q.Fuzzy(n => n.OnField("ListingAttributeDTO.Value").Value("1"))),
                fs => fs.Term("VisibilityId", (int)Visibility.AnyOne),
                fs => fs.Term("StatusId", 2)))),
            fo => fo.Term("OrganizationId", compositeFilter.OrganizationId));

最新更新