У меня есть следующий запрос:Elasticsearch BOOL фильтр с заводной апи
GET /index/type/_search
{
"query": {
"filtered": {
"query": {
"match": {
"project": "ABC"
}
},
"filter": {
"bool": {
"must": [
{"term": {
"subtech": 2
}},
{
"term": {
"tech": 1
}
},
{
"term": {
"country": 1
}
}
]
}
}
}
}
}
И ответ имеет 50 хитов. Все хорошо, потому что у меня есть 100 документов с технологией: 1, страна: 1 и пятьдесят пятьдесят субтемов: 1, субтекс: 2
Когда я пишу этот запрос с groovy api, я отфильтровал с последним значением термина: - последнее значение subtech, ударяется = 50 - последнее значение технологии, ударяется = 100 - последняя страна значение, ударяется = 100
запрос:
client.search {
indices 'index'
types 'type'
source {
query {
filtered {
query {
match(project: 'ABC')
}
filter {
bool {
must {
term(subtech:2)
}
must {
term(tech:1)
}
must {
term(country:1)
}
}
}
}
}
}
}
Любое предложение.
Спасибо за ваш ответ, я исправил пример, и результат тот же :(. – jripoll
Я попробую с вашим примером, и у меня есть исключение: 'org.elasticsearch.search.SearchParseException: [index] [4]: from [-1], size [-1]: Parse Failure [Не удалось разобрать источник [{"query": {"filter": {"query": {"match": {"project": "ABC"}} , "фильтр": { "BOOL": { "must.getAt": [{ "термин": { "subtech": 2}}, { "термин": { "технология": 1}}, { "термин" : {"country": 1}}]}}}}}]] ' – jripoll
Какую версию клиента Groovy вы используете? Также попробуйте изменить его на' must = ['from' must ['. – pickypg