Подтвердить что ты не робот

Запрос диапазона в 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

Что мне не хватает?

Спасибо

4b9b3361

Ответ 1

Отвечая на вопрос, спасибо @javanna:

В разделе RequestBody поисковых документов:

http://www.elasticsearch.org/guide/reference/api/search/request-body.html

В конце он говорит:

Остальная часть запроса на поиск должна быть передана внутри самого тела. Содержимое тела также может быть передано как параметр REST с именем source.

Поэтому я предполагаю, что мне нужно использовать конечную точку поиска с атрибутом source для передачи json.

Ответ 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'