Запрос на основе URI Elasticsearch с оператором AND
Как указать операцию AND в запросе на основе URI? Я ищу что-то вроде:
http://localhost:9200/_search?q="profiletype:student AND username:s*"
Ответы
Ответ 1
Согласно документации, она должна работать, как вы ее описали. См. http://www.elasticsearch.org/guide/reference/query-dsl/query-string-query.html
Тем не менее, вы также можете использовать следующее:
http://localhost:9200/_search?q="+profiletype:student +username:s*"
Ответ 2
Для поиска URI в ElasticSearch вы можете использовать либо оператор AND profiletype:student AND username:s
, как вы говорите, но без кавычек:
_search?q=profiletype:student AND username:s*
Вы также можете установить оператор по умолчанию на AND
_search?q=profiletype:student username:s*&default_operator=AND
Или вы можете использовать оператор +
для условий, которые должны присутствовать, т.е. использовать +profiletype:student +username:s
в качестве строки запроса. Однако это не работает без кодирования URL. В кодировке URL +
есть %2B
, а пробел %20
, поэтому альтернативой будет
_search?q=%2Bprofiletype:student%20%2Busername:s*
Ответ 3
Мне пришлось объединить оператор по умолчанию и знак +, чтобы он работал
curl -XGET 'localhost:9200/apm/inventory/_search?default_operator=AND&q=tenant_id:t2+_all:node_1'
Ответ 4
Вы можете попробовать строку ниже.
http://localhost:9200/_search?q=profiletype:student%20AND%20username:s*
http://localhost:9200/_search?q=profiletype:student AND username:s*