У меня есть индекс Elasticsearch v2.4.2, я заполняю его тип .percolator кучей запросов и некоторых специальных значений. запрос-документы выглядят следующим образом:Поиск запросов в .percolator type
"query" : {
"query_string" : {
"fields" : [ "title", "meta" ],
"query" : "notebooks AND clamps"
},
"key_id" : 14,
"owner_id" : 481,
"priority" : 50,
"special_id" : 477
}
Я пытаюсь удалить некоторые из этих запросов от .percolator, особенно те, с четными значениями «KEY_ID».
Проблема в том, что я пытаюсь выполнить поиск на .percolator, но я не получаю результатов. например, я попробовал эти свертыванию вызовы:
curl 'localhost:9200/percolate_index_d/.percolator/_search?q=key_id:14&pretty'
curl 'localhost:9200/percolate_index_d/.percolator/_search?&pretty' -d '{ query:{filtered:{filter:{term:{"key_id":"14"}}}} }'
Но я всегда получаю это:
{
"took" : 6,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 0,
"max_score" : null,
"hits" : [ ]
}
}
Я даже попытался использовать query.key_id
, но не повезло. Не уверен, что я делаю что-то неправильно, если можно искать по типу .percolator или если есть какое-то обходное решение для этого.
Спасибо за ваш ответ. Проблема в том, что я не хочу фильтровать key_id | owner_id | priority | special_id. Мой запрос выше - это только запрос-документ .percolator. Я добавил значения типа «key_id», чтобы использовать их, когда я нахожу совпадение с API-интерфейсом «_percolate». Запрос работает отлично с_percolate, но мне нужно искать в типе .percolator (например) query-docs с помощью key_id <200 –
Ок, извините, я неправильно понял вашу первоначальную потребность. Я думал, что key_id | owner_id | priority | special_id также должны быть фильтрами терминов вашего запроса, но вы добавляете их только как поля метаданных вашего запроса. Я обновил свой ответ соответственно. – Val
Спасибо большое, он работал как ожидалось! Вы знаете, почему он не работал так, как прежде, «query.key_id = 14»? –