Развертывание векторной базы данных (Weaviate)
Ainergy поддерживает создание сервиса векторной базы данных на сервере Weaviate.
Сервер
Сервер Weaviate — это автономный экземпляр векторной базы данных, развертываемый как отдельный Docker-образ. Сервер предназначен для хранения коллекций данных и векторной базы данных, используемых для семантического поиска и работы с векторными запросами.
Взаимодействие с сервером осуществляется через API. Сервер Weaviate может запускаться независимо от основного проекта, что позволяет использовать его как самостоятельный сервис или интегрировать в существующую инфраструктуру.
Клиент
Клиент — это асинхронный API-клиент, в котором реализованы необходимые методы для работы с векторной базой.
Развертывание
Клиент и сервер развертываются с помощью Docker Compose и работают в рамках одной Docker-сети. Сервер изолирован от внешнего доступа — взаимодействие с ним осуществляется только внутри сети. Клиент предоставляет внешнее API с авторизацией по Bearer-токену.
Конфигурация эмбеддингов и реранкера
Система поддерживает два типа API:
-
Nexus API (по умолчанию для эмбеддингов):
USE_OPENAI_LIKE_EMBEDDINGS=False- Использует переменные
NEXUS_*
-
OpenAI-совместимое API:
USE_OPENAI_LIKE_EMBEDDINGS=TrueUSE_OPENAI_LIKE_RERANKER=True- Использует переменные
EMBEDDING_API_URL,RERANKER_API_URL
Установка и запуск
Выберите версию и следуйте инструкции по установке.
- Версия 1.0.3
- Версия 1.0.0
-
Создайте целевую директорию:
mkdir -p vectordb
cd vectordb -
Создайте
.envфайл в целевой директории, скопируйте в него следующее содержание и заполните необходимой информацией:
.env
# Nexus API Configuration
NEXUS_EMBEDDING_MODEL=ain.qwen3-embedding-4b.embedding
NEXUS_RERANKER_MODEL=ain.qwen3-reranker-4b-v2api.rerank
NEXUS_EMBEDDING_ENDPOINT=/v1/embeddings
NEXUS_RERANKER_ENDPOINT=/v1/rerank
NEXUS_AUTH_TOKEN=xxx — укажите токен для нексусов.
NEXUS_BASE_URL=https://prod-ru1-api.ainergy.ru
# Docling
NEXUS_DOCLING_SYNC=ain.docling.convert_sync
NEXUS_DOCLING_ASYNC=ain.docling.convert_async
NEXUS_DOCLING_POLL=ain.docling.poll_status
NEXUS_DOCLING_RESULT=ain.docling.result
# Weaviate Configuration
AUTH_TOKEN=xxx — укажите Client-API HTTP Bearer токен для авторизации.
WEAVIATE_HOST=weaviate
WEAVIATE_PORT=8080
WEAVIATE_GRPC_PORT=50051
CHUNK_SIZE=1000
CHUNK_OVERLAP=200
PYTHONPATH=/app
# Опционально для бэкапов при использовании vectordb-cron
AWS_ENDPOINT=xxx — укажите путь к вашему хранилищу S3.
AWS_ACCESS_KEY_ID=xxx — укажите логин.
AWS_SECRET_ACCESS_KEY=xxx — укажите пароль.
AWS_BUCKET_NAME=xxx — укажите имя бакета.
AWS_FOLDER_NAME=xxx — укажите название папки внутри бакета, куда будет сохраняться резервная копия данных.
# Cron Schedule
SCHEDULE=0 0 * * * — укажите частоту формирования резервной копии данных в формате Cron.
- Создайте файл
compose.yml, скопируйте в него следующее содержание и заполните необходимой информацией:
compose.yml
networks:
default:
name: vdb-net
external: true
services:
vectordb-client:
container_name: vectordb-client
image: harbor.ainergy.ru/vdb/vectordb-client:1.0.3
ports:
- "3002:8000"
env_file:
- .env
restart: unless-stopped
depends_on:
- vectordb-server
vectordb-server:
container_name: vectordb-server
image: harbor.ainergy.ru/vdb/vectordb-server:1.0.3
ports:
- 8081:8080
- 50052:50051
volumes:
- ./data:/var/lib/vectordb
environment:
QUERY_DEFAULTS_LIMIT: 25
AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'
PERSISTENCE_DATA_PATH: '/var/lib/vectordb'
CLUSTER_HOSTNAME: 'node1'
restart: unless-stopped
networks:
default:
aliases:
- weaviate
vectordb-cron:
container_name: vectordb-cron
image: harbor.ainergy.ru/vdb/vectordb-cron:1.0.3
volumes:
- ./cron/logs:/logs
- ./data:/app/data
depends_on:
- vectordb-server
- vectordb-client
env_file:
- .env
restart: always
-
Создайте Docker-сеть:
docker network create ainergy-net -
Скачайте образы:
docker compose pull -
Запустите сервисы:
docker compose up -d -
Проверьте статус:
docker compose psРазвертывание векторной базы данных через Ansible
-
Заполните файл окружения
roles/vectordb/defaults/main.ymlкак указано ниже:
Файл main.yml
# Docker образы
vdb_server_image_name: harbor.ainergy.ru/vdb/vectordb-server
vdb_client_image_name: harbor.ainergy.ru/vdb/vectordb-client
vdb_cron_image_name: harbor.ainergy.ru/vdb/vectordb-cron
vdb_server_image_tag: "1.0.3"
vdb_client_image_tag: "1.0.3"
vdb_cron_image_tag: "1.0.3"
# Сеть
vdb_network_name: vdb-net
# Порт подключения к API
vdb_connection_port: 3002
# Nexus конфигурация
vdb_connect_auth_token: "your-auth-token"
vdb_connect_nexus_auth_token: "your-nexus-token"
vdb_connect_nexus_url: "https://your-nexus-api.example.com"
vdb_connect_nexus_embedding: "your-embedding-model"
vdb_connect_nexus_reranker: "your-reranker-model"
vdb_connect_nexus_docling_sync: "ain.docling.convert_sync"
vdb_connect_nexus_docling_async: "ain.docling.convert_async"
vdb_connect_nexus_docling_poll: "ain.docling.poll_status"
vdb_connect_nexus_docling_result: "ain.docling.result"
# Необязательно (значения по умолчанию):
vdb_data_dir: ./data # директория для данных
vdb_server_http_port: 8081 # HTTP порт Weaviate
vdb_server_grpc_port: 50052 # gRPC порт Weaviate
vdb_network_external: true # использовать внешнюю сеть
Описание переменных в файле main.yml
Обязательные к заполнению (roles/vectordb/defaults/main.yml)
Образы Docker:
vdb_server_image_name— образ Weaviate сервераvdb_client_image_name— образ клиентского APIvdb_cron_image_name— образ cron для бэкаповvdb_server_image_tag— тег образа сервераvdb_client_image_tag— тег образа клиентаvdb_cron_image_tag— тег образа cron
Сеть и порты:
vdb_connection_port— порт для подключения к клиентуvdb_network_name— имя сети Docker
Конфигурация нексуса:
vdb_connect_auth_token— токен авторизации APIvdb_connect_nexus_auth_token— токен авторизации Nexusvdb_connect_nexus_url— URL Nexus APIvdb_connect_nexus_embedding— имя Nexus эмбеддинговvdb_connect_nexus_reranker— имя Nexus реранкераvdb_connect_nexus_docling_sync— имя Nexus Docling syncvdb_connect_nexus_docling_async— имя Nexus Docling asyncvdb_connect_nexus_docling_poll— имя Nexus Docling pollvdb_connect_nexus_docling_result— имя Nexus Docling result
Необязательные (имеют значения по умолчанию)
vdb_deployment_user— пользователь для развертывания (по умолчанию: root)vdb_deployment_group— группа для развертывания (по умолчанию: root)vdb_data_dir— директория для данных (по умолчанию: ./data)vdb_server_internal_host_name— внутреннее имя хоста сервера (по умолчанию: weaviate)vdb_server_internal_port— внутренний HTTP порт сервера (по умолчанию: 8080)vdb_server_grpc_internal_port— внутренний gRPC порт сервера (по умо лчанию: 50051)vdb_internal_network_name— имя внутренней сети (по умолчанию: vdb-net)vdb_network_external— внешняя сеть (по умолчанию: true)vdb_server_http_port— внешний HTTP порт сервера (по умолчанию: 8081)vdb_server_grpc_port— внешний gRPC порт сервера (по умолчанию: 50052)vdb_client_internal_port— внутренний порт клиента (по умолчанию: 8000)vdb_connect_nexus_embedding_endpoint— путь до эмбеддингов (по умолчанию: /v1/embeddings)vdb_connect_nexus_reranker_endpoint— путь до реранкера (по умолчанию: /v1/rerank)vdb_query_defaults_limit— лимит результатов по умолчанию (по умолчанию: 25)vdb_authentication_anonymous_access_enabled— анонимный доступ (по умолчанию: 'true')vdb_cluster_hostname— имя хоста кластера (по умолчанию: 'node1')vdb_server_network_alias— сетевой алиас (по умолчанию: 'weaviate')vdb_logs_dir— директория для логов (по умолчанию: ./cron/logs)vdb_chunk_size— размер чанка (по умолчанию: 1000)vdb_chunk_overlap— перекрытие чанков (по умолчанию: 200)
Настройки бэкапов (опционально):
vdb_backup_aws_endpoint— путь д о хранилища S3vdb_backup_aws_access_key_id— AWS Access Keyvdb_backup_secret_access_key— AWS Secret Keyvdb_backup_bucket_name— имя бакетаvdb_backup_folder_name— имя папки в бакетеvdb_backup_schedule— расписание cron (по умолчанию: '0 0 * * *')
- Запустите развертывание Ansible:
ansible-playbook -i inventory/inventory.yaml deploy.yaml
- Проверьте работу:
Откройте в браузере: http://localhost:3002/docs
Удаление Ansible
ansible-playbook -i inventory/inventory.yaml deploy.yaml -e "task=remove"
-
Создайте целевую директорию:
mkdir -p vectordb
cd vectordb -
Создайте
.envфайл в целевой директории, скопируйте в него следующее содержание и заполните необходимой информацией:
.env
AUTH_TOKEN=xxx — укажите Client-API HTTP Bearer токен для авторизации.
# Nexus API Configuration
NEXUS_EMBEDDING_MODEL=ain.qwen3-embedding-4b.embedding
NEXUS_RERANKER_MODEL=ain.qwen3-reranker-4b-v2api.rerank
NEXUS_EMBEDDING_ENDPOINT=v1/embeddings — укажите путь к эмбеддингу, как в шаблоне.
NEXUS_RERANKER_ENDPOINT=v1/rerank — укажите путь к реранкеру, как в шаблоне.
NEXUS_AUTH_TOKEN=xxx — укажите токен, полученный от вендора.
NEXUS_BASE_URL=https://test-api.ainergy.ru/ -укажите URL как в шаблоне.
# Weaviate Configuration
WEAVIATE_HOST=weaviate
WEAVIATE_PORT=8080
WEAVIATE_GRPC_PORT=50051
# Document Processing
CHUNK_SIZE=1000
CHUNK_OVERLAP=200
DOCLING_API_URL=https://docling.ai-services.ainergy.ru
# S3 Storage Configuration
AWS_ENDPOINT=xxx — укажите путь к вашему хранилищу S3.
AWS_ACCESS_KEY_ID=xxx — укажите логин.
AWS_SECRET_ACCESS_KEY=xxx — укажите пароль.
AWS_BUCKET_NAME=xxx — укажите имя бакета.
AWS_FOLDER_NAME=xxx — укажите название папки внутри бакета, куда будет сохраняться резервная копия данных.
# Cron Schedule
SCHEDULE=0 0 * * * — укажите частоту формирования резервной копии данных в формате Cron.
# OpenAI-like API Configuration (альтернатива Nexus)
#OPENAI_API_KEY=None — логин.
#OPENAI_EMBEDDING_API_KEY=None — логин.
#OPENAI_RERANKER_API_KEY=None — логин.
EMBEDDING_API_URL=https://qwen3-embeddings.ai-services.ainergy.ru/v1/embeddings
RERANKER_API_URL=https://qwen3-reranker.ai-services.ainergy.ru/v2/rerank
USE_OPENAI_LIKE_EMBEDDINGS=False — укажите, если необходимо использовать эмбеддинг от OpenAI.
USE_OPENAI_LIKE_RERANKER=False — укажите, если необходимо использовать реранкер от OpenAI.
OPENAI_EMBEDDING_MODEL=qwen3_embeddings
OPENAI_RERANKER_MODEL=qwen3_reranker
# System Configuration
PYTHONPATH=/app
- Создайте файл
compose.yml, скопируйте в него следующее содержание и заполните необходимой информацией:
compose.yml
yaml
networks:
default:
name: ainergy-net
external: true
services:
vectordb-client:
container_name: vectordb-client
image: harbor.ainergy.ru/vdb/vectordb-client:latest
ports:
- "3002:8000"
env_file:
- .env
restart: unless-stopped
depends_on:
- vectordb-server
vectordb-server:
container_name: vectordb-server
image: harbor.ainergy.ru/vdb/vectordb-server:latest
ports:
- 8081:8080
- 50052:50051
volumes:
- ./data:/var/lib/vectordb
environment:
QUERY_DEFAULTS_LIMIT: 25
AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'
PERSISTENCE_DATA_PATH: '/var/lib/vectordb'
CLUSTER_HOSTNAME: 'node1'
restart: unless-stopped
networks:
default:
aliases:
- weaviate
vectordb-cron:
container_name: vectordb-cron
image: harbor.ainergy.ru/vdb/vectordb-cron:latest
volumes:
- ./cron/logs:/logs
- ./data:/app/data
depends_on:
- vectordb-server
- vectordb-client
env_file:
- .env
restart: always
-
Создайте Docker-сеть:
docker network create ainergy-net -
Скачайте образы:
docker compose pull -
Запустите сервисы:
docker compose up -d -
Проверьте статус:
docker compose ps
Развертывание векторной базы данных через Ansible
- Заполните файл окружения
roles/vectordb/defaults/main.ymlкак указано ниже:
Файл main.yml
# Docker образы
vdb_server_image_name: harbor.ainergy.ru/vdb/vectordb-server
vdb_client_image_name: harbor.ainergy.ru/vdb/vectordb-client
vdb_cron_image_name: harbor.ainergy.ru/vdb/vectordb-cron
vdb_server_image_tag: "1.0.0"
vdb_client_image_tag: "1.0.0"
vdb_cron_image_tag: "1.0.0"
# Сеть
vdb_network_name: vdb-net
# Порт подключения к API
vdb_connection_port: 3002
# Nexus конфигурация
vdb_connect_auth_token: "your-auth-token"
vdb_connect_nexus_auth_token: "your-nexus-token"
vdb_connect_nexus_url: "https://your-nexus-api.example.com"
vdb_connect_nexus_embedding: "your-embedding-model"
vdb_connect_nexus_reranker: "your-reranker-model"
vdb_connect_nexus_docling_sync: "ain.docling.convert_sync"
vdb_connect_nexus_docling_async: "ain.docling.convert_async"
vdb_connect_nexus_docling_poll: "ain.docling.poll_status"
vdb_connect_nexus_docling_result: "ain.docling.result"
# Необязательно (значения по умолчанию):
vdb_data_dir: ./data # директория для данных
vdb_server_http_port: 8081 # HTTP порт Weaviate
vdb_server_grpc_port: 50052 # gRPC порт Weaviate
vdb_network_external: true # использовать внешнюю сеть
Описание переменных в файле main.yml
Обязательные к заполнению (roles/vectordb/defaults/main.yml)
Образы Docker:
vdb_server_image_name— образ Weaviate сервераvdb_client_image_name— образ клиентского APIvdb_cron_image_name— образ cron для бэкаповvdb_server_image_tag— тег образа сервераvdb_client_image_tag— тег образа клиентаvdb_cron_image_tag— тег образа cron
Сеть и порты:
vdb_connection_port— порт для подключения к клиентуvdb_network_name— имя сети Docker
Конфигурация нексуса:
vdb_connect_auth_token— токен авторизации APIvdb_connect_nexus_auth_token— токен авторизации Nexusvdb_connect_nexus_url— URL Nexus APIvdb_connect_nexus_embedding— имя Nexus эмбеддинговvdb_connect_nexus_reranker— имя Nexus реранкераvdb_connect_nexus_docling_sync— имя Nexus Docling syncvdb_connect_nexus_docling_async— имя Nexus Docling asyncvdb_connect_nexus_docling_poll— имя Nexus Docling pollvdb_connect_nexus_docling_result— имя Nexus Docling result
Необязательные (имеют значения по умолчанию)
vdb_deployment_user— пользователь для развертывания (по умолчанию: root)vdb_deployment_group— группа для развертывания (по умолчанию: root)vdb_data_dir— директория для данных (по умолчанию: ./data)vdb_server_internal_host_name— внутреннее имя хоста сервера (по умолчанию: weaviate)vdb_server_internal_port— внутренний HTTP порт сервера (по умолчанию: 8080)vdb_server_grpc_internal_port— внутренний gRPC порт сервера (по умолчанию: 50051)vdb_internal_network_name— имя внутренней сети (по умолчанию: vdb-net)vdb_network_external— внешняя сеть (по умолчанию: true)vdb_server_http_port— внешний HTTP порт сервера (по умолчанию: 8081)vdb_server_grpc_port— внешний gRPC порт сервера (по умолчанию: 50052)vdb_client_internal_port— внутренний порт клиента (по умолчанию: 8000)vdb_connect_nexus_embedding_endpoint— путь до эмбеддингов (по умолчанию: /v1/embeddings)vdb_connect_nexus_reranker_endpoint— путь до реранкера (по умолчанию: /v1/rerank)vdb_query_defaults_limit— лимит результатов по умолчанию (по умолчанию: 25)vdb_authentication_anonymous_access_enabled— анонимный доступ (по умолчанию: 'true')vdb_cluster_hostname— имя хоста кластера (по умолчанию: 'node1')vdb_server_network_alias— сетевой алиас (по умолчанию: 'weaviate')vdb_logs_dir— директория для логов (по умолчанию: ./cron/logs)vdb_chunk_size— размер чанка (по умолчанию: 1000)vdb_chunk_overlap— перекрытие чанков (по умолчанию: 200)
Настройки бэкапов (опционально):
vdb_backup_aws_endpoint— путь до хранилища S3vdb_backup_aws_access_key_id— AWS Access Keyvdb_backup_secret_access_key— AWS Secret Keyvdb_backup_bucket_name— имя бакетаvdb_backup_folder_name— имя папки в бакетеvdb_backup_schedule— расписание cron (по умолчанию: '0 0 * * *')
- Запустите развертывание Ansible:
ansible-playbook -i inventory/inventory.yaml deploy.yaml
- Проверьте работу:
Откройте в браузере: http://localhost:3002/docs
Удаление Ansible
ansible-playbook -i inventory/inventory.yaml deploy.yaml -e "task=remove"
Конечные точки API
После развертывания API доступно по адресу: http://localhost:vdb_connection_port.
Доступ к API
- Client API:
http://localhost:3002 - Weaviate API:
http://localhost:8081(только для отладки) - Документация Swagger:
http://localhost:3002/docs
Управление
- Остановка:
docker compose down - Перезапуск:
docker compose restart - Логи:
docker compose logs -f - Обновление:
docker compose pull && docker compose up -d
Примечания
- Все переменные окружения должны быть настроены в .env файле.
- Данные Weaviate сохраняются в папке
./data. - Резервные копии создаются автоматически согласно расписанию
SCHEDULE. - Порты можно изменить в файле
compose.ymlпри необходимости.
Работа с фильтрацией и метаданными
Формат загрузки документов
В VectorDB документы загружаются с текстом и метаданными. Метаданные – это словарь с произвольными ключами и значениями. Поддерживаемые типы: String, Integer, Float, Boolean, Date по стандарту ISO-8601.
Пример загрузки текста с метаданными:
{
"metadata": {
"sys_id": "12345",
"status": "active",
"priority": 1,
"flag": true,
"type": "project_management",
"created": "2024-01-01T00:00:00Z"
},
"text": "Документ о системе управления проектами..."
}
Пример загрузки файла с метаданными:
{
"metadata": {
"sys_id": "67890",
"status": "draft",
"priority": 2,
"flag": false,
"type": "safety_instruction",
"created": "2024-01-02T00:00:00Z"
},
"file": "<файл>"
}
- Метаданные автоматически определяют схему коллекции (тип поля определяется по первому загруженному значению).
- Для значений типа Boolean используйте
true/false(без кавычек). - Для дат используйте формат
YYYY-MM-DDTHH:MM:SSZ.
Фильтрация при поиске (ретриве) документов
Для поиска документов с фильтрацией используйте конечную точку /get_relevant_documents с параметром metadata – строкой фильтра.
Ниже предоставлена информация об особенностях поддерживаемых VectorDB операторов условий.
Примеры фильтров
| Условие поиска | Пример |
|---|---|
| По строке | status=active |
| По числу | priority=1 |
| По булевому значению | flag=true |
| По дате: | created=2024-01-01T00:00:00Z |
| Несколько условий (оператор AND) | status=active^priority=1 |
| Несколько условий (оператор OR) | (status=active^priority=1)^OR(status=draft) |
| Сложные условия с операторами AND/OR и скобками: | (status=active^priority=1)^OR(type=report) |
| Оператор IN | status IN ('active', 'draft') |
| Оператор LIKE (поиск по подстроке) | typeLIKEreport |
| Операторы сравнения | priority>1, priority<=2, created>=2024-01-01T00:00:00Z |
Примеры сложных фильтров
| Задача | Фильтр |
|---|---|
| Все документы со статусом active и приоритетом 1 | status=active^priority=1 |
| Документы с (status=active и priority=1) или с type=report | (status=active^priority=1)^OR(type=report) |
| Документы с флагом true | flag=true |
| Документы, созданные после 2024-01-01 | created>2024-01-01T00:00:00Z |
| Документы с типом из списка | type IN ('project_management', 'financial_report') |
Примеры запросов
{
"collection_names": ["test_collection"],
"metadata": "(status=active^priority=1)^OR(type=report)"
}
{
"collection_names": ["test_collection"],
"metadata": "flag=true"
}
Поддерживаемые операторы
| Оператор | Описание | Пример |
|---|---|---|
= | Равно | status=active |
!= | Не равно | priority!=1 |
> | Больше | priority>1 |
< | Меньше | priority<2 |
>= | Больше или равно | priority>=1 |
<= | Меньше или равно | priority<=2 |
IN | В списке | status IN ('active', 'draft') |
LIKE | Содержит подстроку | typeLIKEreport |
BETWEEN | Диапазон значений (включительно) | priority BETWEEN value1@value2 |
STARTSWITH | Начинается с (регистрозависимо) | title STARTSWITH Инц |
ENDSWITH | Заканчивается на (регистрозависимо) | website ENDSWITH .com |
ON | Точное совпадение datetime | created_at ON 2024-01-15T10:30:00Z |
NOTON | Исключение datetime | updated_at NOTON 2024-01-01T09:00:00Z |
ISEMPTY | Проверка на пустоту | email ISEMPTY |
ISNOTEMPTY | Проверка на заполненность | email ISNOTEMPTY |
^ | Логическое И (AND) | status=active^priority=1 |
^OR | Логическое ИЛИ (OR) | (status=active^priority=1)^OR(type=draft) |
( ) | Группировка условий | (status=active^priority=1)^OR(type=report) |
Операторы для частей даты и времени
| Оператор | Описание | Пример |
|---|---|---|
| YEAR_IS | Год части даты равен значению | createdYEAR_IS2024 |
| MONTH_IS | Месяц части даты равен значению | createdMONTH_IS2 |
| QUARTER_IS | Квартал части даты равен значению | createdQUARTER_IS1 |
| WEEK_IS | Неделя части даты равна значению | createdWEEK_IS10 |
| DAY_IS | День месяца части даты равен значению | createdDAY_IS15 |
| DAY_OF_WEEK_IS | День недели части даты равен значению | createdDAY_OF_WEEK_IS1 |
| HOUR_IS | Час части времени равен значению | createdHOUR_IS10 |
Поддерживаемые типы данных
- String: любые текстовые значения.
- Float: вещественные числа.
- Integer: целые числа.
- BigInt: большие числа (больше 2^53), автоматически поддерживаются как строки с дублированным числовым полем.
- Boolean:
true/false(без кавычек). - Date/Time: строки в формате RFC 3339 (
2024-01-01T00:00:00Z).
Формат фильтра
- Операторы сравнения:
=,!=,>,<,>=,<=,IN,LIKE - Логические операторы:
^– И^OR– ИЛИ- Скобки
()используются для группировки условий.
- Пробелы допускаются между элементами фильтра и не влияют на парсинг.
Особенности фильтрации
- Скобки позволяют строить вложенные и комбинированные условия с AND/OR.
- Пробелы между условиями и операторами игнорируются.
- Операторы могут быть записаны как с пробелами, так и без:
status = active,status=active,status =active– все варианты корректны. - Значения Boolean фильтруются как
flag=trueилиflag=false(без кавычек). - Значения BigInt (числа больше 2^53) автоматически поддерживаются:
- При загрузке создается дублированное числовое поле для корректного поиска.
- Фильтрация работает как для строкового, так и для числового представления:
transaction_id=123456789012345678901,amount>9007199254740993.
- Оператор IN поддерживает списки строк, чисел, дат:
priority IN (1, 2, 3),status IN ('active', 'draft') - Оператор LIKE ищет по подстроке:
typeLIKEreport– эквивалентно поиску по "report". - Операторы AND (
^) и OR (^OR) можно комбинировать с помощью скобок для построения сложных логических выражений. - Операторы STARTSWITH/ENDSWITH чувствительны к регистру и работают с точными совпадениями.
- Оператор BETWEEN поддерживает числа, даты и время с включением граничных значений.
- Операторы ISEMPTY/ISNOTEMPTY проверяют наличие/отсутствие значений в полях.
Рекомендации
- Для сложных фильтров используйте скобки для группировки.
- Для булевых значений используйте
true/falseбе з кавычек. - Для дат используйте формат
YYYY-MM-DDTHH:MM:SSZ. - Для списков используйте оператор
INс запятыми и без кавычек для чисел. - Пробелы в фильтрах допускаются и не влияют на результат.