Как искать в elasticsearch по префиксу?

Решил поизучать elasticsearch, и сразу наталкиваюсь на вопросы (до этого пользовался только Sphinx).
Есть некий индекс test, есть тип country, в нем содержатся документы с названиями стран и их описаниями.

Делаю первый запрос:
curl -XGET 'http://localhost:9200/test/country/_search?pretty=true' -d '
{
 "query": {
   "match": {
     "country": "Украина"
    }
  }
}'


Получаю ожидаемый ответ:
{
  "took" : 33,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 0.24701709,
    "hits" : [ {
      "_index" : "test",
      "_type" : "country",
      "_id" : "AU-xLqS2KzVZz9Yq1Hgw",
      "_score" : 0.24701709,
      "_source":{"langId":1,"langUrl":"ru","langActive":1,"countryId":2,"countryUrl":"ukraine","countryActive":1,"country":"Украина"}


Теперь хочу искать не по полному совпадению, а по префиксу. Делаю по примеру из документации ( https://www.elastic.co/guide/en/elasticsearch/refe... ):
curl -XGET 'http://localhost:9200/test/country/_search?pretty=true' -d '
{
 "query": {
   "prefix": {
     "country": "Украи"
    }
  }
}'


Получаю пустой ответ:
{
  "took" : 5,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 0,
    "max_score" : null,
    "hits" : [ ]
  }
}


Что же я делаю не так? Как все-таки искать по префиксу (так же интересует и поиск по инфиксу), как настроить этот поиск (например, чтобы искало если введена даже одна буква).

Только прошу, не советуйте никаких надстроек. Я пока хочу разобраться на низком уровне, потом и с абстракциями будет легче.
  • Вопрос задан
  • 771 просмотр
Пригласить эксперта
Ответы на вопрос 1
Вы должны использовать анализаторы индекса и поиска. Покажите mapping
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы