Как искать специальные символы utf-8 вasticsearch? - PullRequest
4 голосов
/ 05 января 2012

У меня проблема с поиском решения запроса специальных символов Unicode в Elastic search.

Когда я создаю этот индекс:

curl -XPUT http://localhost:9200/index/type/1 -d '{"name" : "Vrba u řeky"}'

и затем я пытаюсь найти фразу "řeky", все в порядке:

curl -XGET 'http://localhost:9200/index/type/_search?pretty=1' -d '{"query" : {"text" : 

{ "_all" : "řeky" }}}'

{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 0.10848885,
    "hits" : [ {
      "_index" : "index",
      "_type" : "type",
      "_id" : "1",
      "_score" : 0.10848885, "_source" : {"name" : "Vrba u řeky"}
    } ]
  }
}

Но когда я пытаюсь найти то же слово, которое сбежало, я ничего не нахожу:

curl -XGET 'http://localhost:9200/index/type/_search?pretty=1' -d '{"query" : {"text" : { "_all" : "\\u0159eky" }}}'

Каким-то образом можно заставить упругую принимать экранированные строки в запросах вместо необработанных?

Спасибо.

1 Ответ

5 голосов
/ 05 января 2012

Если вы используете, например, bash, то у вас слишком много обратных слешей:

curl -XGET 'http://localhost:9200/index/type/_search?pretty=1' -d '
    {"query" : {"text" : { "_all" : "\u0159eky" }}}
'
{
  "took" : 16,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 0.10848885,
    "hits" : [ {
      "_index" : "index",
      "_type" : "type",
      "_id" : "1",
      "_score" : 0.10848885, "_source" : {"name" : "Vrba u řeky"}
    } ]
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...