Реализация Sql Case Statement в клиенте NEST ElasticSearch

1

Я работаю над Elasticsearch NEST Client для.NET. Я должен выполнить запрос Query Query Query в ES.

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)
  • 0
    Я добился этого с помощью комбинации Bool Query и OR Filter.
Теги:
elasticsearch
nest

1 ответ

1
Лучший ответ

Я достиг этого, объединив Bool Query и Or 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));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню