Как включить kql в запрос клиента высокого уровня dsl / java

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

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

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

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

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

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

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

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

Всего 1 ответ


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

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


Есть идеи?

10000