2016-10-16 13 views
1

Мой вопрос прост, я не могу использовать @ в поисковом запросе. Наконец, я обнаружил, что я могу избежать специальных символов, используя обратную косую черту.escape специальный символ в запросе elasticsearch

GET index/_search 
{ 
    "size": 20, 
    "query": { 
    "query_string": { 
     "query": "\@as", 
     "analyzer": "keyword" 
    } 
    } 
} 

Но когда я пытаюсь сделать что я получил следующее сообщение об ошибке Unrecognized character escape '@' (code 64)\n at. И когда я пытаюсь без символа @ я получил результаты без символа @, как

  1. Как пропустил, как когда-либо
  2. As. GUI
  3. Как будто И так далее. может ли кто-нибудь предложить, как я могу достичь предыдущего запроса, может быть выполнен в соответствии с моим ожиданием?

Я использую

  • Elasticsearch 2.4.1
  • Ubuntu 14,04
  • Kibana 4.6.1

ответ

0

Вы получаете сообщение об ошибке, потому что не нужно бежать " @' персонаж.
"query": "@as" должно работать.
Вы также должны проверить свои сопоставления, если ваши поля не помечены как not_analyzed (или у вас нет анализатора keyword), вы не увидите никаких результатов поиска - стандартный анализатор удаляет символы, такие как «@» при индексировании документа.
UPDATE
query_string использует _all поля по умолчанию, так что вы должны настроить это поле в аналогично этот пример:

PUT index 
{ 
    "mappings":{ 
     "book":{ 
     "_all":{ 
      "type":"string", 
      "index":"analyzed", 
      "analyzer":"whitespace" 
     }, 
     "properties":{ 
      "name":{ 
       "type":"string", 
       "index":"not_analyzed" 
      } 
     } 
     } 
    } 
} 

PUT /index/book/1 
{ 
"name" : "@foo bar" 
} 

GET index/_search 
{ 
    "size": 20, 
    "query": { 
    "query_string": { 
     "query": "@foo", 
     "analyzer": "keyword" 
    } 
    } 
} 
+0

Я не создавал никакого отображения на всех. Я просто храню значения как есть. И я вижу в кибане, что поле индексируется и анализируется. Поэтому, если он использует стандартный анализатор и удаляет персонажа, что мне теперь нужно делать, чтобы получить мои результаты. – Tamizharasan

+0

, если вам нужно иметь возможность поиска по специальным символам, вам нужно изменить свои сопоставления –

+0

, какой тип сопоставления соответствует моему сценарию? Я новичок в этом, поэтому, пожалуйста, уточните ответ. – Tamizharasan