2016-03-21 12 views
1

私はElasticSearch上のデフォルトの動的マッピングを使用して、そして次のようにするJava APIの上に検索方法を呼んでいる:含むメモリの問題のいくつかの最適化、後ElasticSearch貧弱なクエリのパフォーマンスの1 100K文書データセット

response = client.prepareSearch("test") 
    .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) 
    .setQuery(QueryBuilders.queryStringQuery(query)) 
    .setFrom(0).setSize(1000).setExplain(false) 
    .execute().actionGet(); 

ヒープサイズ、スワップを無効にすると、パフォーマンスは他のエンジンと比較して非常に悪いです。たとえば、クエリ「名前:*」は実行に約2分かかります。パフォーマンスを大幅に改善するにはどうすればよいですか?ドキュメントは非常に小さく、各フィールドにはほぼ1トークンしかありません。

+0

ワイルドカード以外の検索も遅いのはわかりますか? – bhspencer

+0

通常のサイズ、たとえば1000の代わりに10で始まり、何が得られますか? – Val

+1

あなたのドキュメントのマッピングで更新してください。また、ワイルドカードは検索にはお勧めできません。 –

答えて

1

私の問題は使用されたクエリの種類にありました。 QueryStringQueryは、1つのドキュメントからすべての単一フィールドをチェックします。 matchQueryを使用することで、パフォーマンスが向上しました。有益なコメントありがとう。

関連する問題