Elastic - Используйте Java High Level Rest Client для выполнения строкового запроса - PullRequest
0 голосов
/ 27 октября 2019

Я пишу сервис для нашей компании, использующий Java, чтобы пользователям было проще запрашивать Elastic. Для этой миссии я использую «Java REST Client высокого уровня».

Допустим, у меня есть запрос, который выглядит следующим образом:

host='hostnameOne' AND (owner='Sam' OR cpuNum=5) OR type LIKE 'Ubuntu'

Есть ли способ использовать QueryBuilder или что-то еще? подобное для того, чтобы легко построить этот запрос? Я видел, что есть что-то, называемое 'simpleQueryStringQuery', но мне не удалось преобразовать запрос выше.

1 Ответ

0 голосов
/ 28 октября 2019

У вас есть следующие варианты:

  1. Использовать строку запроса, не рекомендуется для пользовательского ввода. Это не будет работать точно так, как вы ожидаете. Более того, это может быть опасно, если вы не отключите определенные специальные символы и ключевые слова
  2. Используйте simple_query_string, это альтернатива query_string, ориентированная на пользователя. Хотя он не поддерживает И, ИЛИ, КАК. Вам нужно будет проанализировать ввод и преобразовать его в синтаксис simple_query_string
  3. Использовать новый sql rest api. Приведенный вами пример выглядит как предложение WHERE команды SQL https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-rest.html.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...