2012-03-08 8 views
3

私はElasticSearchインデックスに9000のドキュメントを持っています。弾性検索ドキュメントソート、インデックス作成の問題

分析された文字列フィールドで並べ替える必要があるため、(Googleを介して)フィールドを解析しないようにマッピングを更新する必要があることを知りました。マッピングの変更を反映するためにデータを再度索引付けします。

再インデックス処理は、自分のマシンで約20分かかりました。

非常に強力なプロダクションサーバでは、再インデックス処理で約2時間を費やしていました。

そのサーバーのメモリの状態とプロセッサの使用状況を確認したところ、すべて正常でした。私が知りたいのは何

は次のとおりです。

  1. は、再インデックス全体のドキュメントなしで解析し、トークン化されたフィールドで文書をソートする方法はありますか?

  2. ドキュメント全体のインデックスを再作成する必要がある場合は、サーバー上のドキュメントのインデックスを再作成するのに時間がかかるのはなぜですか?またはサーバーの低速の理由を追跡する方法は?

+2

1.マッピングを変更するには、再インデックスが必要です。しかし、分析フィールド(表示/検索目的など)と分析されていないフィールド(同じデータを含む)を並べて並べて並べると、完全に有効です(多くの時間を費やしています)。おそらくこれは私があなたの質問から推測しているような暗黙のユースケースに答えるでしょう。 –

+2

複数のフィールドに同じデータマップを持たせることは、上記のようにhttp://www.elasticsearch.org/guide/reference/mapping/multi-field-type.htmlで簡単に行うことができます。クライアントコードに変更する –

答えて

0

フィールドが_sourceに格納されている限り、私はあなたが検索するたびにカスタムフィールドを作成することができます。

{ 
    "query" : { "query_string" : {"query" : "*:*"} }, 
    "sort" : { 
    "_script" : { 
     "script" : "<some sorting field>", 
     "type" : "number", 
     "params" : {}, 
     "order" : "asc" 
    } 
    } 
} 

これは、検索するたびにサーバー側でソートスクリプトを再評価するという欠点がありますが、私はそれを解決します(1)。

関連する問題