Elasticsearch
Поиск API
Поиск…
Вступление
API поиска позволяет выполнять поисковый запрос и возвращать поисковые запросы, соответствующие запросу. Запрос может быть предоставлен с использованием простой строки запроса в качестве параметра или с использованием тела запроса.
маршрутизация
При выполнении поиска он будет транслироваться на все индексы / индексы (круговое разворот между репликами). Какими осколками будет выполняться поиск, можно управлять с помощью параметра маршрутизации. Например, при индексировании твитов значением маршрутизации может быть имя пользователя:
curl -XPOST 'localhost:9200/twitter/tweet?routing=kimchy&pretty' -d'
{
"user" : "kimchy",
"postDate" : "2009-11-15T14:12:12",
"message" : "trying out Elasticsearch"
}'
Поиск с использованием тела запроса
Поиски также могут выполняться на elasticsearch с использованием поискового DSL. Элемент запроса в теле запроса поиска позволяет определить запрос с использованием DSL запроса.
GET /my_index/type/_search
{
"query" : {
"term" : { "field_to_search" : "search_item" }
}
}
Мульти-поиск
Параметр multi_search позволяет нам искать запрос в нескольких полях одновременно.
GET /_search
{
"query": {
"multi_match" : {
"query": "text to search",
"fields": [ "field_1", "field_2" ]
}
}
}
Мы также можем увеличить баллы определенных полей с помощью оператора boost (^) и использовать в поле имени (*) дикие карты,
GET /_search
{
"query": {
"multi_match" : {
"query": "text to search",
"fields": [ "field_1^2", "field_2*" ]
}
}
}
Поиск в URI и выделение
Запрос поиска может быть выполнен с использованием URI, предоставляя параметры запроса. Не все параметры поиска отображаются при выполнении поиска в этом режиме, но это может быть удобно для быстрого «скручивания».
GET Index/type/_search?q=field:value
Еще одна полезная функция - выделение совпадений в документах.
GET /_search
{
"query" : {
"match": { "field": "value" }
},
"highlight" : {
"fields" : {
"content" : {}
}
}
}
В приведенном выше случае конкретное поле будет выделено для каждого поиска