Я новичок в elasticsearch и пытаюсь использовать инструменты разработчика для создания фильтров. вот что работает, и я хочу использовать
POST /transform_alldomain/_search
{
"size":0,
"aggs": {
"group": {
"terms": {
"field": "Email.keyword"
},
"aggs": {
"group": {
"terms": {
"field": "bln.keyword"
},
"aggs": {
"group_docs": {
"top_hits": {
"size": 1,
"sort": [
{
"extract_date.max": {
"order": "desc"
}
}
]
}
}
}
}
}
}
}}
теперь я хочу использовать этот похожий материал для фильтрации, введите это в фильтр, отредактируйте как запрос dsl
{
"size":0,
"aggs": {
"group": {
"terms": {
"field": "Email.keyword"
},
"aggs": {
"group": {
"terms": {
"field": "bln.keyword"
},
"aggs": {
"group_docs": {
"top_hits": {
"size": 1,
"sort": [
{
"extract_date.max": {
"order": "desc"
}
}
]
}
}
}
}
}
}
}}
он возвращается
[parsing_exception] [size] query malformed, no start_object after query name, with { line=1 & col=324 }
Я не знаю, в чем разница и как заставить это работать
Мне нужно создать искомый объект из этого
Как я выполняю фильтр:
он возвращается
дорогой @ESCoder, я добавил, как я его выполняю и как он возвращается. Да оба одинаковые
Я действительно новичок в такого рода запросах, пожалуйста, сообщите мне об этом. Моя цель - создать сохраненный поиск.
Вы не можете использовать агрегации на панели «Редактировать фильтр». Эта панель предназначена только для запросов, а не для агрегаций. Агрегации можно выполнять с помощью приложения Visualization, а не приложения Discover.
Приложение Discover не является подходящим инструментом для создания агрегаций, приложение Discover полезно только для запросов и фильтров.
То, чего вы хотите достичь, можно сделать с помощью визуализации таблицы данных. Поэтому вместо «Обнаружение» перейдите к «Визуализация», затем выберите «Создать визуализацию».
Затем выберите визуализацию «Таблица данных».
Затем выберите шаблон индекса
И, наконец, вы можете определить свои две агрегации terms
следующим образом:
Уважаемый @Val, большое спасибо за ответ и объяснение, но он хочет, чтобы он был визуализирован другим приложением для визуализации, таким как гистограмма или круговая диаграмма, поэтому я пытаюсь создать из него сохраненный поиск или индекс, поскольку таблица данных - это визуализация, а показанные данные нельзя использовать для создания круговой диаграммы и т. д. Или у вас есть обходной путь?
В приведенном выше запросе нет запроса части фильтра (т. е.), только агрегации, поэтому в Discover ничего нельзя сохранить (т. е. нет сохраненного поиска). Я предложил Таблицу данных, потому что подумал, что вы хотите увидеть результат, аналогичный результату Discover (то есть строки). Но вы можете выбрать любую другую визуализацию, которая поддерживает агрегацию terms
, например гистограмму, круговую диаграмму и т. д. Попробуйте их.
Большое спасибо за ваше объяснение @Val, но я до сих пор не понимаю, как получить свою цель. моя цель - удалить дубликаты на основе нисходящей временной метки, используя tophits1. На пироге я не видел ничего, что могло бы это сделать.
Ну, в вашем вопросе не упоминается ваш точный вариант использования (удалите дубликаты) :-)
пожалуйста, простите меня за это. Я протестировал код в инструментах разработки, он возвращает какой-то результат, могу ли я создать сохраненный поиск из приведенного выше кода из инструментов разработки?
Как я только что объяснил, нет, вы не можете, потому что это не запрос, это просто некоторые агрегации, а сохраненный поиск касается совпадений запроса (т.е. документов), а не агрегаций. Ваш запрос неявно "match_all": {}
, поэтому нет запроса для сохранения. Однако я уверен, что таблица данных — это визуализация, необходимая для достижения желаемого.
дорогой Вэл, большое спасибо за объяснение, похоже, мне нужно создать еще один обходной путь. Пожалуйста, помогите мне, загляните в эту тему @Val: stackoverflow.com/questions/65246803/…. Я так слеп в эластичности. Спасибо
оба запроса, которые вы дали в вопросе, точно похожи. Запустив какой запрос вы получаете ошибку?