Как включить kql в запрос dsl / java запрос клиента высокого уровня отдыха - PullRequest
0 голосов
/ 10 февраля 2020

Есть ли способ включить KQL (почти синтаксис) в запрос DSL bool, например. У меня есть агрегат, чьи сегменты составляют набор данных, который «сплющен» в табличное представление. В пользовательском интерфейсе мы разрешаем фильтрацию KQL, но после данного действия я получаю набор данных, включенных в строку, для использования в качестве условия логического запроса WHERE, например значений для получения экземпляров документа, которые мы включили в этот набор.

Поэтому я создаю запрос bool, который отлично работает и отлично работает из этих свойств:

{
    "query": {
       "bool": {
          "must": [{
             "match": {
                 "color": "red"
              },{
                  "shape": "circle"
              }
          }]
       }
    }
}

, но я также получаю строку KQL, которую пользователь использовал для фильтрации по набору данных в элементе пользовательского интерфейса item.available: true

Есть ли способ включить это в логический запрос, который я уже построил с помощью java высокоуровневого остального клиента / или просто generi c dsl по этому вопросу?

Я пытался Строка запроса, как кажется, самая близкая в документации, которую я могу найти

{
    "query": {
       "bool": {
          "must": [{
             "match": {
                 "color": "red"
              },{
                  "shape": "circle"
              }
          }]
       },
       "query_string" : {
             "query" : "item.available: true"
        }
    }
}

, но, похоже, это не работает параллельно с запросом bool? Любые идеи? спасибо как всегда

1 Ответ

1 голос
/ 11 февраля 2020

KQL доступен только в пользовательском интерфейсе Kibana. Всякий раз, когда Kibana связывается с Elasticsearch, он использует DSL-запрос Elasticsearch. Одним заметным исключением являются выражения Lucene (или выражения KQL, переведенные в синтаксис Lucene), которые, как вы заметили, заканчиваются поисковыми строками в Elasticsearch query-string -query.

query-string -query - это " стандартный "Elasticsearch-query" и может использоваться везде, где может использоваться любой другой запрос (например, match -query). Так что да, должна быть возможность использовать query-string -запрос в bool -запросе, также при использовании языковых клиентов.

...