Гранение с резинкой
Я реализую ElasticSearch в приложении Ruby-on-Rails 2.3 с самоцветом RubberBand. Я пытаюсь вернуть грани, но я не могу найти методы, которые я могу использовать для этой цели. Я просмотрел документацию и источник.
Кто-нибудь знает, возможно ли это с резинкой?
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)
ПРИМЕЧАНИЕ. Это не те же запросы, что и в документации по asticsearch:
Есть одно важное различие, о котором нужно помнить. Пока поиск
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
}
]
}
}