【问题标题】:Sql Case Statement implementation in ElasticSearch NEST clientElasticSearch NEST 客户端中的 Sql Case 语句实现
【发布时间】:2016-12-19 19:37:48
【问题描述】:

我正在为 .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

显然我不知道该怎么做。我正在研究过去 2 天,但没有找到任何结果。

是否可以像我在前面几行中所做的那样与术语过滤器一起使用,例如:

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

【问题讨论】:

  • 我通过 Bool Query 和 OR Filter 的组合实现了它

标签: c# elasticsearch nest


【解决方案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));

【讨论】:

    猜你喜欢
    • 2017-12-22
    • 2012-09-23
    • 2020-12-22
    • 1970-01-01
    • 2015-02-19
    • 2014-06-23
    • 2013-03-31
    • 2016-07-27
    • 2020-10-27
    相关资源
    最近更新 更多