HTTPサーバ

概要

Droonga HTTP Serverは、Droonga Engine用のHTTP Protocol Adapterです。

Droonga Engineはfluentdプロトコルにのみ対応しているため、Droonga Engineとの通信にはfluent-catなどを使う必要があります。 このアプリケーションは、Droonga EngineとHTTP経由で通信するための機能を提供します。

インストール

Droonga HTTP Serverは、Node.js 用のdroonga-http-server npmモジュールとして提供されています。 以下のように、npmコマンドでインストールすることができます:

# npm install -g droonga-http-server

使い方

コマンドラインオプション

Droonga HTTP Serverは、HTTPサーバを起動するためのdroonga-http-serverコマンドを含んでいます。 以下のようにコマンドラインオプションを指定して起動できます:

# droonga-http-server --port 3003

指定可能なオプションと既定値は以下の通りです:

--port <13000>
HTTPリクエストを受け付けるポート番号。
--receive-host-name <127.0.0.1>
HTTPサーバが動作するコンピュータ自身のホスト名(またはIPアドレス)。 Droonga EngineからProtocol Adapterへレスポンスのメッセージを送出する際の宛先に使われます。
--droonga-engine-host-name <127.0.0.1>
Droonga Engineが動作するコンピュータのホスト名(またはIPアドレス)。
--droonga-engine-port <24224>
Droonga Engineがメッセージを受け付けるポートの番号。
--default-dataset <Droonga>
既定のデータセット名。 組み込みのHTTP APIから発行されるリクエストに使われます。
--tag <droonga>
Droonga Engineに送るfluentdメッセージに使われます。
--enable-logging
このオプションを指定した場合、ログが標準出力に出力されるようになります。
--cache-size <100>
LRUレスポンスキャッシュの最大サイズ。 Droonga HTTP ServerはすべてのGETリクエストについて、レスポンスをここで指定した件数までメモリ上にキャッシュします。

コマンドラインオプションには、組み合わせるDroonga Engineに合わせた値を適切に指定する必要があります。例えば、HTTPサーバが192.168.10.90のコンピュータ上で動作し、Droonga Engineが192.168.10.100のコンピュータ上で以下の設定を伴って動作する時:

fluentd.conf:

<source>
  type forward
  port 24324
</source>
<match books.message>
  name localhost:24224/books
  type droonga
</match>
<match output.message>
  type stdout
</match>

catalog.json:

{
  "version": 2,
  "effectiveDate": "2013-09-01T00:00:00Z",
  "datasets": {
    "Books": {
      ...
    }
  }
}

この時、192.168.10.90のコンピュータ上でHTTPサーバを起動する際のコマンドラインオプションは以下のようになります:

# droonga-http-server --receive-host-name 192.168.10.90 \
                      --droonga-engine-host-name 192.168.10.100 \
                      --droonga-engine-port 24324 \
                      --default-dataset Books \
                      --tag books

基本のチュートリアルも併せて参照して下さい。

組み込みのAPI

Droonga HTTP Serverは以下のAPIを含んでいます:

REST API

GET /tables/<テーブル名>

単純な検索リクエストを発行します。 リクエストのsourceは、パス中で指定されたテーブル名となります。 指定できるクエリパラメータは以下の通りです:

attributes
output.attributesに対応。 値はカンマ区切りのリストです。例:attributes=_key,name,age.
query
condition.*.queryに対応。 値はクエリ文字列です。
match_to
condition.*.matchToに対応。 値はカンマ区切りのリストです。例:match_to=_key,name.
match_escalation_threshold
condition.*.matchEscalationThresholdに対応。 値は整数です。
script
conditionにおけるスクリプト形式の指定に対応。もしqueryと両方同時に指定した場合には、両者のand条件と見なされます。
adjusters
adjustersに対応します。
sort_by
sortByに対応します。 値はカラム名の文字列です。
limit
output.limitに対応。 値は整数です。
offset
output.offsetに対応。 値は整数です。

Groonga HTTPサーバ互換API

GET /d/<コマンド名>

(未稿)