elasticsearch + kibana 完全一致と部分一致

Kibana+Elasticsearchで文字列の完全一致と部分一致検索の両方を実現する を実際に実行する記事です。

環境 CentOS release 6.6 (Final) elasticsearch-1.4.0-1.noarch kibana-3.1.2

kibanaもelasticsearchも同じサーバで動いています。

この記事は 部分一致検索にはrequest_uriフィールドを使い、完全一致検索はrequest_uri.fullフィールドをできるようにします。 request_uri以外もできるようにします。

なので最初の例などは飛ばして、Dynamic Templateを使うの部分の設定をします。 下記ファイルを作成します。

template_all.json [shell] { "template": "", "mappings": { "default": { "_source": { "compress": true }, "dynamic_templates": [ { "string_template" : { "match" : "", "mapping": { "type": "multi_field", "fields": { "{name}": { "type": "string", "index" : "analyzed" }, "full": { "type": "string", "index" : "not_analyzed" } } }, "match_mapping_type" : "string" } } ], "properties" : { "@timestamp" : { "type" : "date", "index" : "not_analyzed" } } } } } [/shell]

作った設定をelasticsearchに突っ込みます。 [shell gutter="false"] $ curl -XPUT localhost:9200/_template/logstash_template/ -d "cat template_all.json" {"acknowledged":true} [/shell]

これで設定が入ったのですが[Mapping Templateを追加したが適用されないとき]に書いてある通り fluent-plugin-elasitcsearchからデータを入れているので僕はすぐに反映されません。 すぐ確認するには新しいインデックスを作る必要があるようです。

なのですぐ確認したい僕は本日のデータを消します。 [shell gutter="false"] $ curl -XDELETE 'http://localhost:9200/logstash-2014.11.20' {"acknowledged":true} [/shell]

ちなみに全件データ削除は [shell gutter="false"] $ curl -XDELETE 'http://localhost:9200/*' [/shell] です。危険です。

そうすると新しいインデックスが作られるので確認しましょう。 local環境でkibanaしか開いてないのでこんな感じになってますが… 左側は.fullを付けない設定で、右が.fullを付けた設定です。 スクリーンショット 2014-11-20 12.59.40

中身も一応スクショ! .fullなし スクリーンショット 2014-11-20 12.43.16

こちらが.full スクリーンショット 2014-11-20 12.43.32

設定前 [shell gutter="false"] $ curl -XGET localhost:9200/_template/logstash_template/ {} [/shell]

設定後 [shell gutter="false"] $ curl -XGET localhost:9200/template/logstash_template/ {"logstash_template":{"order":0,"template":"*","settings":{},"mappings":{"default":{"source":{"compress":true},"dynamic_templates":[{"string_template":{"mapping":{"type":"multi_field","fields":{"full":{"index":"not_analyzed","type":"string"},"{name}":{"index":"analyzed","type":"string"}}},"match_mapping_type":"string","match":"*"}}],"properties":{"@timestamp":{"index":"not_analyzed","type":"date"}}}},"aliases":{}}} [/shell]

元に戻す場合は削除すればいいんでしょうかね(検証してないですが [shell gutter="false"] $ curl -XDELETE localhost:9200/template/logstash_template/ {"acknowledged":true} $ curl -XGET localhost:9200/template/logstash_template/ {} [/shell]

最近記事書けてないの重い記事ばっかりになりそうだからです。(下書きがめっちゃ増えてる…