Arhlit - информационные технологии

Elasticsearch Java-запрос верхнего уровня

Я пытаюсь выполнить поиск по следующему json, используя java API

{
  "query": {
    "has_child": {
      "query" : {
        "filtered": {
          "query": { "match_all": {}},
          "filter" : {
            "and": {"filters":[
              {"term": {"term": "value"}}
            ]}
          }
        }
      },
      "child_type": "child"
    }
  }
}

Вот код Java, который у меня есть,

        QueryBuilders.hasChildQuery("child", QueryBuilders
                           .filteredQuery(QueryBuilders.matchAllQuery(),
                                         FilterBuilders.andFilter(FilterBuilders.
                                          termFilter("term", "value"))));

Однако это просто создает json

{"has_child":
    {"query":
        {"filtered":
            {"query":{"match_all":{}},
                "filter":{
                "and":
                    {"filters":[
                        {"term":{"term":"value"}}
                        ]
                    }
                }
            }
        },
        "child_type":"child"
    }
}

Как видите, мне не хватает верхнего уровня { "query" : ... }, но я не могу понять, как добавить этот запрос верхнего уровня с помощью java API для elasticsearch.

15.12.2014

  • У меня та же проблема, если я попытаюсь обернуть ее с помощью boolQuery, мой верхний уровень окажется {"bool" : ...} 15.12.2014

Ответы:


1

Насколько я понимаю внутри кода

client.prepareSearch("parent-child")
            .setSearchType(SearchType.QUERY_THEN_FETCH)
            .setQuery(query)
            .setFrom(0).setSize(60).setExplain(true)
            .execute()
            .actionGet();

Он автоматически оборачивает запрос с помощью {"query" : ...}

Моя проблема заключалась в том, что я искал не тот индекс.

15.12.2014
Новые материалы

12 сайтов с искусственным интеллектом, которые поразят вас
Приготовьтесь поразить воображение Сегодня существует несколько веб-сайтов, использующих искусственный интеллект (ИИ). От индивидуальных рекомендаций по новостям до более умных поисковых..

Скрытый технический долг в системах машинного обучения [NeurIPS 2015]
Что такое технический долг? Технический долг — это метафора, введенная Уордом Каннингемом в 1992 году, чтобы объяснить долгосрочные затраты, связанные с быстрым продвижением в разработке..

Алгоритм быстрой сортировки в Python
Всем привет, добро пожаловать на programminginpython.com . Здесь я покажу вам, как реализовать алгоритм быстрой сортировки в Python. В предыдущих статьях я рассмотрел Сортировку вставкой ,..

Как использовать манипулирование объектами в JavaScript
Объекты являются важным строительным блоком JavaScript. Они позволяют группировать свойства и методы вместе. Объект представляет собой набор свойств. Свойства идентифицируются с..

Разработка игр с помощью Godot Engine: мощный инструмент с открытым исходным кодом
Разработка игр — творческий и сложный процесс, требующий множества навыков и инструментов. Одним из наиболее важных инструментов является игровой движок, который представляет собой программную..

От XML к аннотациям: переход к современной конфигурации Spring
Введение Фреймворк Spring претерпел значительную эволюцию с момента своего создания. Одним из заметных изменений стал переход от конфигураций на основе XML к конфигурациям, управляемым..

Я люблю Руби!
Я люблю Руби! Мне это нравится по той же причине, по которой мне нравится программировать на Python. Он настолько интуитивно понятен, а встроенные методы упрощают решение проблем. Если вы..