2016-12-21 2 views
1

Я работаю над миграцией Elasticsearch с 1.7.1 до 5.0. Я исправил большинство проблем в коде после обновления до 5.0, но я не мог понять, как изменить FilterContainer для работы в новой версии.FilterContainer in Elasticsearch NEST 5.0

Ниже мой код


public static List<FilterContainer> GetPriceRangeFilters(SearchListCriteria criteria, out List<FilterContainer> additionalpricefilters) 
    { 
     var pricefilters = new List<FilterContainer>(); 
     additionalpricefilters = new List<FilterContainer>(); 
     if (criteria.SearchGlobalSettings.MinimumPriceRange != null && criteria.SearchGlobalSettings.MinimumPriceRange.Length > 0) 
     { 
      const string fieldName = "itemPrices.webPrice"; 
      pricefilters.Add((new FilterDescriptor<ItemSearchEntry>()).Query(a => a.Range(n => n.OnField(fieldName).GreaterOrEquals(criteria.SearchGlobalSettings.MinimumPriceRange[0].ToString()). 
       LowerOrEquals(criteria.SearchGlobalSettings.MaximumPriceRange[0].ToString())))); 
      for (var i = 1; i < criteria.SearchGlobalSettings.MinimumPriceRange.Length; i++) 
      { 
       additionalpricefilters.Add((new FilterDescriptor<ItemSearchEntry>()).Query(a => a.Range(n => n.OnField(fieldName). 
        GreaterOrEquals(criteria.SearchGlobalSettings.MinimumPriceRange[i].ToString()).LowerOrEquals(criteria.SearchGlobalSettings.MaximumPriceRange[i].ToString())))); 
      } 
     } 
     return pricefilters; 
    } 

ответ

2

FilterContainer больше не существует в NEST 2,0 года, because filters and queries merged in Elasticsearch into queries с запроса или фильтра контекста.

Где бы вы использовали FilterContainer, использовать QueryContainer, а затем при добавлении к поиску, передать коллекцию FilterContainer в bool запроса filter пункта а.

Смежные вопросы