Запрос диапазона в ElasticSearch (GET без тела)
Итак, очень простой вопрос об elasticsearch, на котором документы не отвечают очень четко (потому что они, кажется, входят во многие детали, но не пропустите основные!).
Пример: запрос диапазона
http://www.elasticsearch.org/guide/reference/query-dsl/range-query.html
Не говорит о том, как ИЗМЕНИТЬ диапазон, через конечную точку поиска?
И если это так, то как это сделать через querystring? Я хочу сказать, что хочу сделать GET, а не POST (потому что это запрос, а не вставка/модификация). Однако документация для запросов GET не говорит о том, как использовать JSON, как в примере Range:
http://www.elasticsearch.org/guide/reference/api/search/uri-request.html
Что мне не хватает?
Спасибо
Ответы
Ответ 1
Отвечая на вопрос, спасибо @javanna:
В разделе RequestBody поисковых документов:
http://www.elasticsearch.org/guide/reference/api/search/request-body.html
В конце он говорит:
Остальная часть запроса на поиск должна быть передана внутри самого тела. Содержимое тела также может быть передано как параметр REST с именем source.
Поэтому я предполагаю, что мне нужно использовать конечную точку поиска с атрибутом source
для передачи json.
Ответ 2
Используйте синтаксис запроса Lucene:
curl -X GET 'http://localhost:9200/my_index/_search?q=my_field:[0+TO+25]&pretty'
Ответ 3
Предположим, что мы имеем индекс
curl -XPUT localhost:9200/test
И некоторые документы
curl -XPUT localhost:9200/test/range/1 -d '{"age": 9}'
curl -XPUT localhost:9200/test/range/2 -d '{"age": 12}'
curl -XPUT localhost:9200/test/range/3 -d '{"age": 16}'
Теперь мы можем запросить эти документы в определенном диапазоне через
curl -XGET 'http://localhost:9200/test/range/_search?pretty=true' -d '
{
"query" : {
"range" : {
"age" : {
"from" : "10",
"to" : "20",
"include_lower" : true,
"include_upper": true
}
}
}
}
'
Это вернет документы 2 и 3.
Я не уверен, есть ли способ выполнить эти сложные запросы через запрос URI.
Изменить. Благодаря карми это решение без запроса JSON:
curl -XGET --globoff 'localhost:9200/test/range/_search?q=age:["10"+TO+"20"]&pretty=true'