メインコンテンツまでスキップ

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 の追加

  1. Squid Console を開き、Elasticsearch で使用する application を選択します。
  2. Connectors tab をクリックし、次に Available connectors をクリックします。
  3. Elasticsearch connector を選択します。
  4. 次の 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 します。

Client code
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: _searchGET)を渡します。

Client code
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 を参照してください。