@johtaniの日記 2nd

@johtani ‘s blog 2nd edition

Elasticsearch 2.0系のIssueの紹介

この記事はElasticsearch Advent Calndar 2014の25日目のエントリです。

あっという間に最終日です。来年につなげるという意味で、Elasticsearchの2系のIssueをいくつかピックアップして紹介してみます。

現在、ElasticsearchのGitHubリポジトリは、大きく3つのブランチで作業しています。 master1.x1.4です。master1.xの大きな違いとしては、masterはLuceneの5.x系を採用している点です。

なお、これから紹介するIssueは現在、確定していない項目も含んでいます。実際に2.0がリリースされるタイミングでは 採用されない場合もあります。

Upgrade master to lucene 5.0 snapshot #8347 (closed)

https://github.com/elasticsearch/elasticsearch/pull/8347

先ほど書きましたが、Luceneの5に対応するためのPRです。 Lucene 5に関してはLuceneのコミッターのMikeさんのブログ記事も参考になります。

Lucene 5に変更することで、BitSetに関する改善が多く含まれることになります。 メモリの利用量、圧縮などの改善が多く含まれています。 もう1点大事な点としては、Lucene 5系ではLucene 3系のインデックスを読み込むことができなくなる点です。 Luceneの下位互換の範囲は1つ前のメジャーバージョン(5.x系の場合は4.xまでが対象)となっています。

Filter cache: add a _cache: auto option and make it the default.(closed)

https://github.com/elasticsearch/elasticsearch/pull/8573

Filter cacheは、trueもしくはfalseの設定が利用できますが、filterの種類にも依存します。 その辺りの条件を加味しつつ、よしなにCacheをコントロールしてくれます。

Remove and/or/not in favour of bool filter #8960(open / discuss)

https://github.com/elasticsearch/elasticsearch/issues/8960

似ているが少し異なるandornotフィルタとboolフィルタが存在しています。 これらをわかりやすくするために、boolフィルタに統一しましょうという話し合いをしています。

Input validation #9059(open / discuss)

https://github.com/elasticsearch/elasticsearch/issues/9059

色々な入力に関するチェックを追加しようというIssueです。 たとえば、ディレクトリ名やファイル名、URLのパスやクエリストリング、フィールドのパスやスクリプトなどです。 Validationがあると、変な設定をして頭をかかえることもなくなるかなぁと。

Refactor analysis framework #8961(open)

https://github.com/elasticsearch/elasticsearch/issues/8961

新しくAnalyzerを作った場合に、色々な場所に登録必要があったりします。インデックスレベルとノードレベルです。(Kuromojiプラグインなどが参考になります。) また、インデックスごとにカスタムのAnalyzerを設定するので、1つのノードに同じAnalyzerを何度も設定しないといけません。 よりシンプルにするために、Analyzerをノード単位で設定しようという提案です。

Remove possibility for conflicting field definitions and ambiguous field resolution #8870(open)

https://github.com/elasticsearch/elasticsearch/issues/8870

同じインデックスに、異なるtypeで、同じフィールド名があった場合、いろいろと良くないことがあったりします。 たとえば、フィールドのタイプがintegerとstringと異なる場合に、インデックスレベルで検索を行うとうまく検索できなかったりと。 この問題を解消するために、より明確にしようというIssueです。 たとえば、フィールド名を指定するためには、フルパスで記述をするだとか、フィールドマッピングに関してはインデックスレベルで内部で保持をするなど。

Validation of mappings request to reject unsupported fields #7205(closed)

https://github.com/elasticsearch/elasticsearch/issues/7205

1.xでも取り込まれますが、嬉しい機能なので紹介します。 これまでは、mappingsでスペルミスをした場合(たとえば、field設定で”indexx”といったミス)には、その項目は単に無視されるだけでした。 これが、v1.xでは、エラーに

まとめ

ということで、簡単ですが、v2.0.0に向けたIssueをピックアップして紹介してみました。 上記以外にも多くの改善、提案が2.0に向けて行われています。 興味のある方は、v2.0.0ラベルでIssueを検索してみてはいかがでしょうか?

今年もあとわずかとなりました。 今年の2月にElasticsearchの1.0がリリースされ、あっという間に1.4なりました。まだまだ改善しています。

来年もElasticsearchに興味をもっていただければ嬉しいです。 Elasticsearch初のユーザカンファレンスのサイトもオープンしました。 Elasticsearchに関するいろいろな話が聞ける機会だと思います。登録をお待ちしています。

Comments