Огранка резинкой

Я реализую ElasticSearch в приложении Ruby-on-Rails 2.3 с драгоценным камнем RubberBand. Я пытаюсь вернуть фасеты, но не могу найти методы, которые можно использовать для этой цели. Я просмотрел документацию и исходный код.

Кто-нибудь знает, возможно ли это с помощью резинки?


person Denis    schedule 15.05.2013    source источник


Ответы (1)


Эта проблема может иметь то, что вы ищете:

https://github.com/grantr/rubberband/issues/4

q = {
  "query"=> {
    "filtered"=> {
      "query"=> { 
        "match_all"=> {}
      },
      "filter"=> {
        "term"=> {
          "client_id"=> "717",
          "product_id"=> "1"
        }
      }
    }
  },
  "facets"=> {
    "shipped_to_state_counts"=> {
      "terms"=> {
        "field"=> "state",
        "size"=> "500"
      }
    }
  }
}

РЕДАКТИРОВАТЬ: (более простой запрос, синтаксис lucene)

ПРИМЕЧАНИЕ. Согласно документации elasticsearch, это разные запросы:

Следует помнить об одном важном различии. В то время как поиск queries ограничивает как возвращаемые документы, так и количество аспектов, поиск filters ограничивает только возвращаемые документы, но не количество аспектов.

q = {
  "query"=> {
    "query_string"=> {
      "query"=> "client_id:717 AND product_id:1"
    }
  },
  "facets"=> {
    "shipped_to_state_counts"=> {
      "terms"=> {
        "field"=> "state",
        "size"=> "500"
      }
    }
  }
}

ЗАВЕРШИТЬ РЕДАКТИРОВАНИЕ

results = client.search(q)
facets = results.facets

=>
{
  "shipped_to_state_counts"=> {
    "_type"=> "terms",
    "missing"=> 0,
    "total"=> 1873274,
    "other"=> 0,
    "terms"=> [
      {
        "term"=> "MO",
        "count"=> 187327
      },
      {
        "term"=> "FL",
        "count"=> 17327
      }
    ]
  }
} 
person iouri    schedule 15.05.2013