Эластичный поиск — поиск точно совпадающей строки с использованием пользовательского интерфейса запроса

Вот мой JSON.

{
    "id":100,
    "name":"xxx",       
    "hobbies":["cricket","footbal","singing & dancing"]

}

Мне нужно отфильтровать строку «пение и танцы» от «других». Выполненный ниже запрос.

http://localhost:9200/employeed/data/_search?q={"query":{"query_string":{"query" : "hobbies:Singing & dancing"}}}   

Я получаю исключение ниже.

"type": "illegal_argument_exception",
  "reason": "request [employee/data/_search] contains unrecognized parameter: [ Singing\"}}}]"  

Любая помощь?


person Learn Hadoop    schedule 22.02.2018    source источник
comment
закрыть скобки после увлечений и снова открыть перед пением. это пара ключ-значение   -  person Lupanoide    schedule 22.02.2018
comment
Все еще получаю то же исключение. это запрос {query:{query_string:{query : hobbies:Пение и танцы}}}   -  person Learn Hadoop    schedule 22.02.2018
comment
Как ты это делаешь? С завитком? Или кибана? Что такое пользовательский интерфейс запроса?   -  person wholevinski    schedule 22.02.2018
comment
Я использую интерфейс запросов   -  person Learn Hadoop    schedule 23.02.2018


Ответы (1)


Вы пытаетесь отправить запрос DSL в URI. Эти два понятия несовместимы, см. здесь: https://www.elastic.co/guide/en/elasticsearch/reference/6.2/search-search.html

API поиска позволяет выполнять поисковый запрос и получать результаты поиска, соответствующие запросу. Запрос может быть предоставлен либо с использованием простой строки запроса в качестве параметра, либо с использованием тела запроса.

Вы можете либо использовать DSL и отправить его в тексте запроса, либо изменить URL-адрес, чтобы просто включать строку query_string хобби, которую вы хотите использовать. Как это:

http://localhost:9200/employeed/data/_search?q=hobbies%3A%5C%22Singing%20%26%20dancing%5C%22

Часть query_string также закодирована в URL. Я также добавил кавычки вокруг вашего поискового значения, иначе они будут объединены в ИЛИ. Некодированная версия:

hobbies:\"Singing & dancing\"
person wholevinski    schedule 22.02.2018
comment
Тем не менее я получаю ошибку нераспознанного параметра.. проблема с символом & в URL-адресе запроса.. есть ли другой способ решить эту проблему? - person Learn Hadoop; 23.02.2018
comment
В моем закодированном URL-адресе нет амперсанда. Кроме того, я попытался отправить DSL в теле запроса с амперсандом, и это сработало. - person wholevinski; 23.02.2018
comment
Было бы здорово поделиться частью кода. Так как я новичок в ES и что такое DSL. Они уже реализованы с помощью прямого запроса. проблема с символом '&'. Пожалуйста, поделитесь дополнительной информацией. большое спасибо - person Learn Hadoop; 23.02.2018