メインコンテンツまでスキップ
バージョン: User Guides (Cloud)

基本演算子

Zilliz Cloudは、データを効率的にフィルタリングおよびクエリするための豊富な基本演算子セットを提供します。これらの演算子により、スカラーフィールド、数値計算、論理条件などに基づいて検索条件を絞り込むことができます。これらの演算子の使用方法を理解することは、正確なクエリを構築し、検索の効率を最大化するために重要です。

比較演算子

比較演算子は、等号、不等号、体格に基づいてデータをフィルタリングするために使用されます。数値フィールドとテキストフィールドに適用されます。

サポートされる比較演算子:

  • ==(等しい)

  • !=(等しくない)

  • >(より大きい)

  • <(より少ない)

  • >=(以上または等しい)

  • <=(以下または等しい)

例1: Equal To(==)でフィルタリングする

ステータスという名前のフィールドがあり、ステータスが「アクティブ」であるすべてのエンティティを検索したいとします。等号演算子==を使用することができます。

filter = 'status == "active"'

例2: Not Equal To(!=)でフィルタリングする

「非アクティブ」でない状態のエンティティを検索するには:

filter = 'status != "inactive"'

例3:より大きい値(>)でフィルタリングする

大なり30の年齢を持つすべてのエンティティを見つけたい場合:

filter = 'age > 30'

例4: Less Thanでのフィルタリング

価格が100未満のエンティティ検索するには:

filter = 'price < 100'

例5:「より大きい」または「等しい」(>=)でフィルタリングする

4以上のレーティングを持つすべてのエンティティを見つけたい場合:

filter = 'rating >= 4'

例6: Less ThanまたはEqual Toでフィルタリングする

10%以下のディスカウントを持つエンティティを検索するには:

filter = 'discount <= 10'

レンジ演算子

範囲演算子は、特定のセットまたは値の範囲に基づいてデータをフィルタリングするのに役立ちます。

対応する範囲演算子:

  • IN:特定のセットまたは範囲内の値を一致させるために使用されます。

  • LIKE:パターンに一致するために使用されます(主にテキストフィールド用)。

例1:INを使用して複数の値を一致させる

「赤」、「緑」、「青」のいずれかのを持つすべての図形を検索したい場合:

filter = 'color in ["red", "green", "blue"]'

これは、値のリストのメンバーシップを確認する場合に便利です。

例2:パターンマッチングにLIKEを使用する

文字列フィールドでのパターンマッチングには、LIKE演算子が使用されます。テキスト内の異なる位置にある部分文字列を接頭辞中置き、または接尾辞として一致させることができます。LIKE演算子は、%記号をワイルドカードとして使用し、ゼロを含む任意の数の文字に一致させることができます。

プレフィックスマッチ(始まり)

与えられたパターンで始まる文字列のプレフィックスマッチを実行するには、パターンを先頭に置き、%を使用してそれに続く任意の文字に一致させることができます。例えば、名前が「Prod」で始まるすべての製品を検索するには:

filter = 'name LIKE "Prod%"'

これは、「Product A」、「Product B」など、名前が「Prod」で始まる製品に一致します。

接尾辞一致(で終わる)

与えられたパターンで終わる文字列の接尾辞が一致する場合、パターンの先頭に%記号を配置します。例えば、名前が「XYZ」で終わるすべての製品を検索するには:

filter = 'name LIKE "%XYZ"'

これは、「ProductXYZ」、「SampleXYZ」など、名前が「XYZ」で終わる製品に一致します。

中置一致(含む)

パターンが文字列のどこにでも現れる中置一致を行うには、パターンの先頭と末尾の両方に%記号を置くことができます。例えば、名前に「Pro」という単語が含まれるすべての製品を検索するには:

filter = 'name LIKE "%Pro%"'

これは、"Product"、"ProLine"、"SuperPro"など、名前に部分文字列"Pro"が含まれる製品に一致します。

算術演算子

算術演算子を使用すると、数値フィールドを含む計算に基づいて条件を作成できます。

サポートされる演算子:

  • +(加算)

  • -(引き算)

  • *(掛け算)

  • /(ディビジョン)

  • %(モジュラス)

  • **(エキスポンシエーション)

例1:モジュラス(%)を使用する

2で割り切れるIDを持つエンティティを見つけるには:

filter = 'id % 2 == 0'

例2: Exponentiation(**)を使用する

2の累乗の価格が大なり1000であるエンティティを見つけるには:

filter = 'price ** 2 > 1000'

論理演算子

論理演算子は、複数の条件をより複雑なフィルター式に結合するために使用されます。これらには、ANDORNOTが含まれます。

サポートされる論理演算子:

  • AND:すべてtrueである必要がある複数の条件を組み合わせます。

  • OR:少なくとも1つがtrueでなければならない条件を組み合わせます。

  • NOT:条件を否定します。

例1:ANDを使用して条件を結合する

以下のように、価格が100で在庫が50である商品を検索します。

filter = 'price > 100 AND stock > 50'

例2:ORを使用して条件を結合する

「赤」または「青」のいずれかののすべての製品を検索するには:

filter = 'color == "red" OR color == "blue"'

例3:NOTを使用して条件を除外する

「緑」以外ののすべての製品を検索するには:

filter = 'NOT color == "green"'

IS NULL演算子とIS NOT NULL演算子

IS NULLおよびIS NOT NULL演算子は、NULL値(データの欠如)が含まれているかどうかに基づいてフィールドをフィルタリングするために使用されます。

  • IS NULL:特定のフィールドにnull値が含まれているエンティティを識別します。

  • IS NOT NULL:特定のフィールドにnull以外の値が含まれているエンティティを識別します。

📘ノート

演算子は大文字と小文字を区別しないため、IS NULLまたはis nullIS NOT NULLまたはis not nullを使用できます。

Null値を持つ正規スカラーフィールド

Zilliz Cloudnull値を持つ文字列や数値などの通常のスカラーフィールドでフィルタリングを許可します。

📘ノート

VARCHARフィールドでは、空の文字列""はnull値として扱われません。

descriptionフィールドがnullのエンティティを取得するには:

filter = 'description IS NULL'

descriptionフィールドがnullでないエンティティを取得するには:

filter = 'description IS NOT NULL'

descriptionフィールドがnullでなく、priceフィールドが10より大きいエンティティを取得するには:

filter = 'description IS NOT NULL AND price > 10'

Null値を持つJSONフィールド

Zilliz Cloudnull値を含むJSONフィールドをフィルタリングすることができます。JSONフィールドは、以下の方法でnullとして扱われます。

  • JSONオブジェクト全体が明示的にNone(null)に設定されています。例えば、{"metadata": None}

  • JSONフィールド自体がエンティティから完全に欠落しています。

📘ノート

JSONオブジェクト内のいくつかの要素がnullである場合(例えば、個別のキー)、そのフィールドはnullではないと見なされます。例えば、{"metadata":{"category": None,"price": 99.99}}は、categoryキーがnullであってもnullとして扱われません。

その方法をさらに説明するためにZilliz Cloudnull値を持つJSONフィールドを処理する場合、JSONフィールドのmetadataを持つ次のサンプルデータを検討してください。

data = [
{
"metadata": {"category": "electronics", "price": 99.99, "brand": "BrandA"},
"pk": 1,
"embedding": [0.12, 0.34, 0.56]
},
{
"metadata": None, # Entire JSON object is null
"pk": 2,
"embedding": [0.56, 0.78, 0.90]
},
{ # JSON field `metadata` is completely missing
"pk": 3,
"embedding": [0.91, 0.18, 0.23]
},
{
"metadata": {"category": None, "price": 99.99, "brand": "BrandA"}, # Individual key value is null
"pk": 4,
"embedding": [0.56, 0.38, 0.21]
}
]

例1:メタデータがnullのエンティティを取得する

metadataフィールドが欠落しているか、明示的にNoneに設定されているエンティティを検索するには:

filter = 'metadata IS NULL'

# Example output:
# data: [
# "{'metadata': None, 'pk': 2}",
# "{'metadata': None, 'pk': 3}"
# ]

例2:メタデータがnullでないエンティティを取得する

metadataフィールドがnullでないエンティティを検索するには:

filter = 'metadata IS NOT NULL'

# Example output:
# data: [
# "{'metadata': {'category': 'electronics', 'price': 99.99, 'brand': 'BrandA'}, 'pk': 1}",
# "{'metadata': {'category': None, 'price': 99.99, 'brand': 'BrandA'}, 'pk': 4}"
# ]

NULL値を持つARRAYフィールド

Zilliz Cloudnull値を含むARRAYフィールドのフィルタリングを許可します。ARRAYフィールドは、次の方法でnullとして扱われます。

  • ARRAYフィールド全体が明示的にNone(null)に設定されています。例えば、"tags": None

  • エンティティからARRAYフィールドが完全に欠落しています。

📘ノート

ARRAYフィールドには、すべての要素が同じデータ型である必要があるため、部分的なNULL値を含めることはできません。詳細については、配列フィールドを参照してください。

その方法をさらに説明するためにZilliz Cloudnull値を持つARRAYフィールドを処理する場合、ARRAYフィールドtagsを持つ次のサンプルデータを考慮してください。

data = [
{
"tags": ["pop", "rock", "classic"],
"ratings": [5, 4, 3],
"pk": 1,
"embedding": [0.12, 0.34, 0.56]
},
{
"tags": None, # Entire ARRAY is null
"ratings": [4, 5],
"pk": 2,
"embedding": [0.78, 0.91, 0.23]
},
{ # The tags field is completely missing
"ratings": [9, 5],
"pk": 3,
"embedding": [0.18, 0.11, 0.23]
}
]

例1:tagsがnullのエンティティを取得する

tagsフィールドが欠落しているか、明示的にNoneに設定されているエンティティを取得するには:

filter = 'tags IS NULL'

# Example output:
# data: [
# "{'tags': None, 'ratings': [4, 5], 'embedding': [0.78, 0.91, 0.23], 'pk': 2}",
# "{'tags': None, 'ratings': [9, 5], 'embedding': [0.18, 0.11, 0.23], 'pk': 3}"
# ]

例2:tagsがnullでないエンティティを取得する

tagsフィールドがnullでないエンティティを取得するには:

filter = 'tags IS NOT NULL'

# Example output:
# data: [
# "{'metadata': {'category': 'electronics', 'price': 99.99, 'brand': 'BrandA'}, 'pk': 1}",
# "{'metadata': {'category': None, 'price': 99.99, 'brand': 'BrandA'}, 'pk': 4}"
# ]

JSONとARRAYフィールドで基本演算子を使用するためのヒント

Zilliz Cloudクラスタの基本演算子は汎用性があり、スカラーフィールドに適用できますが、JSONフィールドとARRAYフィールドのキーとインデックスでも効果的に使用できます。

たとえば、productフィールドにpricemodeltagsなどの複数のキーが含まれている場合は、常にキーを直接参照します。

filter = 'product["price"] > 1000'

記録された温度の配列の最初の温度が特定の値を超えるレコードを検索するには、次のようにします。

filter = 'history_temperatures[0] > 30'

結論として

Zilliz Cloudは、データのフィルタリングとクエリに柔軟性を与える基本演算子の範囲を提供しています。比較、範囲、算術、論理演算子を組み合わせることで、強力なフィルタ式を作成して、検索結果を絞り込み、必要なデータを効率的に取得できます。