Поиск…


Вступление

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" : {}
        }
    }
}

В приведенном выше случае конкретное поле будет выделено для каждого поиска



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow