Решил поизучать 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" : [ ]
}
}
Что же я делаю не так? Как все-таки искать по префиксу (так же интересует и поиск по инфиксу), как настроить этот поиск (например, чтобы искало если введена даже одна буква).
Только прошу, не советуйте никаких надстроек. Я пока хочу разобраться на низком уровне, потом и с абстракциями будет легче.