Правила синхронизации соединителей
Используйте правила синхронизации соединителей для управления тем, какие документы синхронизируются между источником данных сторонних разработчиков и Elasticsearch. Определяйте правила синхронизации в пользовательском интерфейсе Kibana для каждого индекса соединителя, в вкладке Sync rules для индекса.
Правила синхронизации применяются к управляемым соединителям и соединителям, управляемым самостоятельно.
Доступность и предварительные требования
В версиях Elastic 8.8.0 и более поздних все соединители поддерживают базовые правила синхронизации.
Некоторые соединители поддерживают расширенные правила синхронизации. Дополнительные сведения см. в документации по отдельным соединителям.
Типы правил синхронизации
Существует два типа правил синхронизации:
- Базовые правила синхронизации — эти правила представлены в виде таблицы. Базовые правила синхронизации одинаковы для всех соединителей.
- Расширенные правила синхронизации — эти правила охватывают сложные сценарии запросов и фильтрации, которые нельзя выразить с помощью базовых правил синхронизации. Расширенные правила синхронизации определяются с помощью фрагмента JSON DSL, специфичного для источника.
Общие понятия фильтрации данных
Прежде чем обсуждать правила синхронизации, важно понять основные понятия фильтрации данных. На следующем рисунке показано, что фильтрация данных может происходить на нескольких разных этапах/в разных местах.
В этом руководстве мы сосредоточимся на удаленной и интеграционной фильтрации. Правила синхронизации можно использовать для изменения обоих этих типов.
Удаленная фильтрация
Данные могут быть отфильтрованы в источнике. Это называется удаленной фильтрацией, так как процесс фильтрации является внешним для Elastic.
Интеграционная фильтрация
Интеграционная фильтрация служит мостом между исходным источником данных и Elasticsearch. Примером интеграционной фильтрации является фильтрация, выполняемая в соединителях.
Фильтрация конвейера
Наконец, Elasticsearch может отфильтровать данные непосредственно перед сохранением с помощью конвейеров обработки. В этом руководстве мы не будем рассматривать фильтрацию конвейеров обработки.
В настоящее время базовые правила синхронизации являются единственным способом управления интеграционной фильтрацией для соединителей. Помните, что удаленная фильтрация выходит далеко за рамки самих соединителей. Для достижения наилучших результатов сотрудничайте с владельцами и администраторами вашего источника данных. Убедитесь, что исходные данные хорошо организованы и оптимизированы для типов запросов, выполняемых соединителями.
Обзор правил синхронизации
В большинстве случаев ваш хранилище данных будет содержать гораздо больше данных, чем вам нужно предоставить конечным пользователям. Например, вы можете захотеть искать в каталоге продукции, но не включать контактную информацию поставщиков, даже если эти данные совмещены для бизнес-целей.
Оптимальное время для фильтрации данных — на ранней стадии конвейера данных. Есть две основные причины:
- Производительность: Эффективнее отправить запрос к исходному источнику данных, чем получить все данные, а затем отфильтровать их в соединителе. Быстрее отправлять меньший набор данных по сети и обрабатывать его на стороне соединителя.
- Безопасность: Фильтрация по запросу выполняется на стороне источника данных, поэтому данные не передаются по сети и не попадают в соединитель, что ограничивает раскрытие ваших данных.
В идеальном случае вся фильтрация выполнялась бы как удаленная фильтрация.
Однако на практике это не всегда возможно. Некоторые источники не позволяют выполнять эффективную удаленную фильтрацию. Другие позволяют, но требуют специальной настройки (создание индексов по определенным полям, настройка параметров и т.д.), которая может потребовать внимания со стороны других заинтересованных лиц в вашей организации.
С учетом этого правила синхронизации были разработаны для изменения как удаленной, так и интеграционной фильтрации. Ваша цель должна заключаться в том, чтобы выполнять как можно больше удаленной фильтрации, но интеграция является вполне приемлемой резервной мерой. По определению, удаленная фильтрация применяется до получения данных из стороннего источника. Интеграционная фильтрация применяется после получения данных из стороннего источника, но перед добавлением их в индекс Elasticsearch.
Все правила синхронизации применяются к данному документу перед запуском любых конвейеров обработки на этом документе. Поэтому вы можете использовать конвейеры обработки для любой обработки, которая должна выполняться после интеграционной фильтрации.
Если правило синхронизации добавлено, отредактировано или удалено, оно вступит в силу только после следующей полной синхронизации.
Базовые правила синхронизации
Каждое базовое правило синхронизации может быть одним из двух «политик»: include и exclude. Include правила используются для включения документов, которые «соответствуют» указанному условию. Exclude правила используются для исключения документов, которые «соответствуют» указанному условию.
«Соответствие» определяется на основе условия, определенного комбинацией «поле», «правило» и «значение».
Столбец Field должен использоваться для определения поля в документе, которое следует учитывать.
В столбце Rule доступны следующие правила:
-
equals— значение поля равно указанному значению. -
starts_with— значение поля начинается с указанного (строкового) значения. -
ends_with— значение поля заканчивается указанным (строковым) значением. -
contains— значение поля включает указанное (строковое) значение. -
regex— значение поля соответствует указанному регулярному выражению. -
>— значение поля больше указанного значения. -
<— значение поля меньше указанного значения.
Наконец, столбец Value зависит от:
- типа данных в указанном «поле»
- выбранного «правила».
Например, значение [A-Z]{2} может иметь смысл для правила regex, но не так для правила >. Аналогично, у вас, вероятно, не будет значения espresso при работе с полем ip_address, но, возможно, у вас будет для поля beverage.
Примеры базовых правил синхронизации
Пример 1
Исключить все документы, у которых поле ID имеет значение больше 1000.
Пример 2
Исключить все документы, у которых поле state соответствует указанному регулярному выражению.
Последствия для производительности
- Если вы полагаетесь только на базовые правила синхронизации на этапе интеграционной фильтрации, соединитель получит все данные из источника данных.
- Для источников данных без автоматической постраничной навигации или аналогичных оптимизаций получение всех данных может привести к проблемам с памятью. Например, при загрузке наборов данных, которые слишком велики, чтобы поместиться в оперативную память за один раз.
Родной соединитель MongoDB, предоставляемый Elastic, использует постраничную навигацию и, следовательно, имеет оптимизированную производительность. Имейте в виду, что у собственных, созданных сообществом, соединителей, управляемых самостоятельно, может не быть этих оптимизаций производительности.
Следующие диаграммы иллюстрируют концепцию постраничной навигации. Огромный набор данных может не поместиться в оперативную память экземпляра соединителя. Разделение данных на меньшие блоки снижает риск ошибок исчерпания памяти.
На этой диаграмме показано, что весь набор данных извлекается за один раз:
В сравнении, на этой диаграмме показано извлечение данных по страницам:
Расширенные правила синхронизации
Расширенные правила синхронизации перезаписывают любой удаленный запрос на фильтрацию, который можно было бы вывести из базовых правил синхронизации. Если определено расширенное правило синхронизации, любые определенные базовые правила синхронизации будут использоваться исключительно для интеграционной фильтрации.
Расширенные правила синхронизации используются только в удаленной фильтрации. Представьте себе расширенные правила синхронизации как способ представления запросов к источнику данных, независимый от языка. Поэтому эти правила в высокой степени специфичны для источника.
Следующие соединители поддерживают расширенные правила синхронизации:
Каждый подключитель, поддерживающий расширенные правила синхронизации, предоставляет свой собственный DSL для задания правил. Обратитесь к документации по каждому подключителю для получения подробностей.
Объединение базовых и расширенных правил синхронизации
Вы также можете использовать базовые правила синхронизации и расширенные правила синхронизации вместе для фильтрации набора данных.
На следующем рисунке показан порядок применения расширенных правил синхронизации, базовых правил синхронизации и фильтрации конвейера к вашим документам:
Пример
В следующем примере мы хотим отфильтровать набор данных, содержащий квартиры, чтобы он содержал только квартиры со специфическими свойствами. Мы будем использовать базовые и расширенные правила синхронизации на протяжении всего примера.
Примерная квартира выглядит следующим образом в формате .json:
{
"id": 1234,
"bedrooms": 3,
"price": 1500,
"address": {
"street": "Street 123",
"government_area": "Area",
"country_information": {
"country_code": "PT",
"country": "Portugal"
}
}
} Целевой набор данных должен удовлетворять следующим условиям:
- Каждая квартира должна иметь как минимум 3 спальни
- Квартиры не должны стоить дороже 1500 в месяц
- Квартира с id 1234 должна быть включена, не учитывая первые два условия
- Каждая квартира должна находиться либо в Португалии, либо в Испании
Первые 3 условия можно обработать с помощью базовых правил синхронизации, но для условия № 4 нам понадобятся расширенные правила синхронизации.
Примеры базовых правил синхронизации
Чтобы создать новое базовое правило синхронизации, перейдите на вкладку Правила синхронизации и выберите Создать черновик правил синхронизации:
После этого вам нужно нажать кнопку Сохранить и проверить черновик для проверки этих правил. Обратите внимание, что после сохранения правила будут в состоянии черновик. Они не будут выполняться при следующей синхронизации, пока не будут применены.
После успешной проверки вы можете применить свои правила, чтобы они выполнялись при следующей синхронизации.
Следующие условия могут быть покрыты базовыми правилами синхронизации:
- Квартира с id 1234 должна быть включена, не учитывая первые два условия
- Каждая квартира должна иметь как минимум три спальни
- Квартиры не должны стоить дороже 1000/месяц
Помните, что порядок важен для базовых правил синхронизации. Вы можете получить разные результаты при разном порядке.
Пример расширенных правил синхронизации
Вы хотите включить только квартиры, расположенные в Португалии или Испании. Здесь необходимо использовать расширенные правила синхронизации, так как мы имеем дело с глубоко вложенными объектами.
Предположим, что данные о квартирах хранятся в экземпляре MongoDB. Для MongoDB мы поддерживаем конвейеры агрегации в наших расширенных правилах синхронизации.
Конвейер агрегации для выбора только квартир, расположенных в Португалии или Испании, выглядит следующим образом:
[
{
"$match": {
"$or": [
{
"address.country_information.country": "Portugal"
},
{
"address.country_information.country": "Spain"
}
]
}
}
] Чтобы создать эти расширенные правила синхронизации, перейдите в диалоговое окно создания правил синхронизации и выберите вкладку Расширенные правила. Теперь вы можете вставить свой конвейер агрегации в поле ввода под aggregate.pipeline:
После проверки примените эти правила. На следующем снимке экрана показаны примененные правила синхронизации, которые будут выполнены при следующей синхронизации:
После успешной синхронизации можно развернуть детали синхронизации, чтобы увидеть, какие правила были применены:
Активные правила синхронизации могут стать недействительными при изменении вне пользовательского интерфейса. Задачи синхронизации с недействительными правилами завершатся ошибкой. Одним из способов решения этой проблемы является повторная проверка черновиков правил и переопределение недействительных активных правил.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/es-sync-rules.html