🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI
Главная
  • Руководство пользователя
  • Home
  • Docs
  • Руководство пользователя

  • Поиск и ранжирование

  • Фильтрация

  • Операторы JSON

Операторы JSON

Milvus поддерживает расширенные операторы для запросов и фильтрации полей JSON, что делает их идеальными для управления сложными структурированными данными. Эти операторы позволяют выполнять высокоэффективные запросы к документам JSON, позволяя вам извлекать сущности на основе определенных элементов, значений или условий в полях JSON. В этом разделе мы расскажем вам об использовании специфических операторов JSON в Milvus и приведем практические примеры, иллюстрирующие их функциональность.

JSON-поля не могут работать со сложными вложенными структурами и рассматривают все вложенные структуры как обычные строки. Поэтому при работе с полями JSON рекомендуется избегать слишком глубокой вложенности и следить за тем, чтобы структуры данных были как можно более плоскими для достижения оптимальной производительности.

Доступные операторы JSON

Milvus предоставляет несколько мощных операторов JSON, которые помогают фильтровать и запрашивать данные JSON, а именно.

  • JSON_CONTAINS(identifier, expr): Фильтрует сущности, в поле которых встречается указанное выражение JSON.

  • JSON_CONTAINS_ALL(identifier, expr): : Убеждается, что все элементы указанного JSON-выражения присутствуют в поле.

  • JSON_CONTAINS_ANY(identifier, expr): : Фильтрует сущности, в которых хотя бы один член JSON-выражения присутствует в поле.

Давайте рассмотрим эти операторы на примерах, чтобы увидеть, как они могут применяться в реальных сценариях.

JSON_CONTAINS

Оператор json_contains проверяет, существует ли определенный элемент или подмассив в поле JSON. Он полезен, когда нужно убедиться, что массив или объект JSON содержит определенное значение.

Пример

Представьте, что у вас есть коллекция продуктов, каждый из которых имеет поле tags, содержащее JSON-массив строк, например ["electronics", "sale", "new"]. Вы хотите отфильтровать товары, имеющие тег "sale".

# JSON data: {"tags": ["electronics", "sale", "new"]}
filter = 'json_contains(tags, "sale")'

В этом примере Milvus вернет все товары, в которых поле tags содержит элемент "sale".

JSON_CONTAINS_ALL

Оператор json_contains_all гарантирует, что все элементы указанного JSON-выражения присутствуют в целевом поле. Он особенно полезен, когда нужно сопоставить несколько значений в массиве JSON.

Пример

Продолжая сценарий с тегами продуктов, если вы хотите найти все продукты, имеющие теги "electronics", "sale", и "new", вы можете использовать оператор json_contains_all.

# JSON data: {"tags": ["electronics", "sale", "new", "discount"]}
filter = 'json_contains_all(tags, ["electronics", "sale", "new"])'

Этот запрос вернет все товары, в которых массив tags содержит все три указанных элемента: "electronics", "sale", и "new".

JSON_COTAINS_ANY

Оператор json_contains_any фильтрует сущности, в которых хотя бы один член выражения JSON существует в поле. Это полезно, когда нужно подобрать сущности по любому из нескольких возможных значений.

Пример

Допустим, вы хотите отфильтровать продукты, имеющие хотя бы один из тегов "electronics", "sale" или "new". Для этого можно использовать оператор json_contains_any.

# JSON data: {"tags": ["electronics", "sale", "new"]}
filter = 'json_contains_any(tags, ["electronics", "new", "clearance"])'

В этом случае Milvus вернет все товары, у которых есть хотя бы один из тегов в списке ["electronics", "new", "clearance"]. Даже если у товара есть только один из этих тегов, он будет включен в результат.

Попробуйте Managed Milvus бесплатно

Zilliz Cloud работает без проблем, поддерживается Milvus и в 10 раз быстрее.

Начать
Обратная связь

Была ли эта страница полезной?