Elasticsearch
Squid は Elasticsearch cluster に接続し、Squid application のデータソースとして利用できます。
Elasticsearch connector を使用すると、Squid Client SDK 経由で indices を query し、native Elasticsearch query を実行し、AI agents があなたのデータを使って質問に回答できるようになります。
Elasticsearch connector は 読み取り専用 です。Search、count、aggregations、その他の読み取り操作はサポートされていますが、document writes、_bulk、_update_by_query、_delete_by_query は拒否されます。
Elasticsearch 側の前提条件
- scheme と port を含む到達可能な node URL(例:
https://your-elasticsearch-host:9200)。 - 任意で、公開したい indices に対する read privileges を持つ user。connector は HTTP basic auth(username + password)で認証します。省略した場合は未認証で接続します。
- private network 上の cluster の場合、Squidlet 経由で接続を routing できます。Squidlet はあなたのマシン上で実行される proxy で、Squid が local resources にアクセスできるようにします。
Elasticsearch connector の追加
- Squid Console を開き、Elasticsearch で使用する application を選択します。
- Connectors tab をクリックし、次に Available connectors をクリックします。
- Elasticsearch connector を選択します。
- 次の configuration information を入力します。
- Connector ID - 短く、connector を識別しやすい ID を選択します。
- Database Endpoint - cluster URL。例:
https://your-elasticsearch-host:9200。 - Database Username - 任意。read access を持つ user。
- Database Password - 任意。非公開にするには、password を Squid Secrets に保存します。
- Squidlet ID - 任意。private clusters に到達するための Squidlet proxy の ID。
- Tables to Process - 任意。schema discovery に含める indices の comma-separated list。regex pattern を指定するには forward slashes を使用します(例:
/^logs-.*/)。
indices の検出
connector を追加した後、Schema tab を使用して indices と data streams を検出します。Squid は各 index の mapping を読み取って schema を構築し、番号付きの index series(time-based indices など)を glob patterns にまとめます。System indices は除外されます。
データの query
他の Squid collection と同じように、connector ID を渡して Client SDK から indices を query します。
const articles = await squid
.collection<Article>('articles', 'YOUR_ELASTICSEARCH_CONNECTOR_ID')
.query()
.like('title', '%observability%')
.snapshot();
Elasticsearch query DSL に完全にアクセスするには、executeNativeElasticQuery で native query を実行し、index、request body、および任意で endpoint と HTTP method(defaults: _search と GET)を渡します。
const result = await squid.executeNativeElasticQuery(
'YOUR_ELASTICSEARCH_CONNECTOR_ID',
'articles',
{
query: { match: { title: 'observability' } },
size: 10,
},
);
Native queries は、_search、_count、_msearch、_mget、_mapping、_sql、_eql などの読み取り専用 endpoints に制限されます。mutating endpoint への requests は error を返します。
Elasticsearch 固有の挙動として、次の点に注意してください。
- limit が設定されていない場合、standard queries は最大 1000 件の results を返します。
- 独自の timeout を指定していない search requests には、30 秒の server-side timeout が適用されるため、runaway queries は cluster によってキャンセルされます。
- 各 connector は最大 15 件の concurrent native queries を許可します。それを超える requests は queue されずに拒否されます。
database の保護
デフォルトでは security rules が必要です。本番環境では、security rules なしで connector への access を許可しないことが不可欠です。database data の保護について詳しくは、security rules documentation を参照してください。
Squid でデータを扱う方法については、Client SDK documentation を参照してください。