Интерфейс прикладного программирования (API) в сети — это группа вызовов функций или других инструкций по программированию для доступа к программному компоненту в этом конкретном веб-приложении. Например, Facebook API помогает разработчику создавать приложения, получая доступ к данным или другим функциям из Facebook; это может быть дата рождения или обновление статуса.
Elasticsearch предоставляет REST API, доступ к которому осуществляется через JSON через HTTP. Elasticsearch использует следующие соглашения —
Несколько индексов
Большинство операций, в основном поиск и другие операции, в API для одного или нескольких индексов. Это помогает пользователю выполнять поиск в нескольких местах или во всех доступных данных, просто выполнив запрос один раз. Много разных обозначений используются для выполнения операций с несколькими индексами. Мы обсудим некоторые из них здесь, в этом разделе.
Запись через запятую
POST http://localhost:9200/index1,index2,index3/_search
Тело запроса
{ "query":{ "query_string":{ "query":"any_string" } } }
отклик
JSON-объекты из index1, index2, index3, содержащие в себе any_string.
ключевое слово _all для всех индексов
POST http://localhost:9200/_all/_search
Тело запроса
{ "query":{ "query_string":{ "query":"any_string" } } }
отклик
JSON возражает от всех индексов и имеет any_string в нем.
Подстановочные знаки (*, +, -)
POST http://localhost:9200/school*/_search
Тело запроса
{ "query":{ "query_string":{ "query":"CBSE" } } }
отклик
JSON возражает от всех индексов, которые начинаются со школы, в которой есть CBSE.
Также вы можете использовать следующий код:
POST http://localhost:9200/school*,-schools_gov /_search
Тело запроса
{ "query":{ "query_string":{ "query":"CBSE" } } }
отклик
JSON возражает от всех индексов, которые начинаются со слова «school», но не от schools_gov, и имеют CBSE.
Есть также некоторые параметры строки запроса URL —
-
ignore_unavailable — ошибка не возникнет или операция не будет остановлена, если один или несколько индексов, присутствующих в URL, не существуют. Например, индекс школ существует, но book_shops не существует —
ignore_unavailable — ошибка не возникнет или операция не будет остановлена, если один или несколько индексов, присутствующих в URL, не существуют. Например, индекс школ существует, но book_shops не существует —
POST http://localhost:9200/school*,book_shops/_search
Тело запроса
{ "query":{ "query_string":{ "query":"CBSE" } } }
отклик
{ "error":{ "root_cause":[{ "type":"index_not_found_exception", "reason":"no such index", "resource.type":"index_or_alias", "resource.id":"book_shops", "index":"book_shops" }], "type":"index_not_found_exception", "reason":"no such index", "resource.type":"index_or_alias", "resource.id":"book_shops", "index":"book_shops" },"status":404 }
Посмотрите на следующий код —
POST http://localhost:9200/school*,book_shops/_search?ignore_unavailable = true
Тело запроса
{ "query":{ "query_string":{ "query":"CBSE" } } }
Ответ (без ошибок)
JSON возражает от всех индексов, которые начинаются со школы, в которой есть CBSE.
allow_no_indices
Значение true этого параметра предотвратит ошибку, если URL с подстановочным знаком не приводит к индексам.
Например, нет индекса, который начинается с schools_pri —
POST http://localhost:9200/schools_pri*/_search?allow_no_indices = true
Тело запроса
{ "query":{ "match_all":{} } }
Ответ (без ошибок)
{ "took":1,"timed_out": false, "_shards":{"total":0, "successful":0, "failed":0}, "hits":{"total":0, "max_score":0.0, "hits":[]} }
expand_wildcards
Этот параметр определяет, нужно ли расширять символы подстановки, чтобы открывать индексы или закрывать индексы, или и то, и другое. Значение этого параметра может быть открытым и закрытым или не указывать все.
Например, закрыть индекс школы —
POST http://localhost:9200/schools/_close
отклик
{"acknowledged":true}
Посмотрите на следующий код —
POST http://localhost:9200/school*/_search?expand_wildcards = closed
Тело запроса
{ "query":{ "match_all":{} } }
отклик
{ "error":{ "root_cause":[{ "type":"index_closed_exception", "reason":"closed", "index":"schools" }], "type":"index_closed_exception", "reason":"closed", "index":"schools" }, "status":403 }
Дата Математическая поддержка в именах индексов
Elasticsearch предлагает функциональность для поиска индексов по дате и времени. Нам нужно указать дату и время в определенном формате. Например, accountdetail-2015.12.30, index будет хранить банковские реквизиты по состоянию на 30 декабря 2015 года. Математические операции могут быть выполнены для получения деталей на определенную дату или диапазон дат и времени.
Формат имени даты математического индекса —
<static_name{date_math_expr{date_format|time_zone}}> http://localhost:9200/<accountdetail-{now-2d{YYYY.MM.dd|utc}}>/_search
static_name — это часть выражения, которая остается неизменной в каждом математическом индексе даты, как и детали счета. date_math_expr содержит математическое выражение, которое динамически определяет дату и время, как now-2d. date_format содержит формат, в котором дата записывается в индексе, например, YYYY.MM.dd. Если сегодняшняя дата — 30 декабря 2015 г., то <accountdetail- {now-2d {YYYY.MM.dd}}> вернет accountdetail-2015.12.28.
выражение | Разрешается в |
---|---|
<Accountdetail- {теперь д}> | accountdetail-2015.12.29 |
<Accountdetail- {теперь М}> | accountdetail-2015.11.30 |
<Accountdetail- {Теперь {YYYY.MM}}> | accountdetail-2015,12 |
Теперь мы увидим некоторые общие параметры, доступные в Elasticsearch, которые можно использовать для получения ответа в указанном формате.
Симпатичные результаты
Мы можем получить ответ в хорошо отформатированном объекте JSON, просто добавив параметр запроса URL, то есть pretty = true.
POST http://localhost:9200/schools/_search?pretty = true
Тело запроса
{ "query":{ "match_all":{} } }
отклик
…………………….. { "_index" : "schools", "_type" : "school", "_id" : "1", "_score" : 1.0, "_source":{ "name":"Central School", "description":"CBSE Affiliation", "street":"Nagan", "city":"paprola", "state":"HP", "zip":"176115", "location": [31.8955385, 76.8380405], "fees":2000, "tags":["Senior Secondary", "beautiful campus"], "rating":"3.5" } } ………………….
Человек читаемый вывод
Эта опция может изменить статистические ответы либо в удобочитаемую для человека форму (если человек = истина), либо в читаемую компьютером форму (если человек = ложь). Например, если человек = истина, то расстояние_километр = 20 км, а если человек = ложь, то расстояние_метр = 20000, когда ответ должен использоваться другой компьютерной программой.
Фильтрация ответов
Мы можем отфильтровать ответ на меньшее количество полей, добавив их в параметр field_path. Например,