2016-03-21 21 views
1
Ben ElasticSearch üzerinde varsayılan dinamik eşleştirme kullanılarak ve aşağıdaki gibi Java API üzerinden arama yöntemi çağırıyorum

: hafıza konularında birkaç optimizasyonlar sonraElasticSearch kötü sorgu performansı biri 100K belgeleri veri kümesi

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

dahil yığın boyutu, takas devre dışı bırakmak, performans diğer motorlar ile karşılaştırıldığında çok kötü. Örneğin, "Ad: *" sorgusu gerçekleştirilmesi neredeyse 2 dakika sürer. Performansı önemli ölçüde geliştirmek için neler yapabilirim? Dokümanlar, her alan için neredeyse 1 jetonlu çok küçük.

+0

Vahşi olmayan aramaların da yavaş olduğunu görüyor musunuz? – bhspencer

+0

Normal bir boyutla başlayın, 1000 yerine 10 yerine, ne verir? – Val

+1

Lütfen belgenizi eşleme ile güncelleyin. Ayrıca joker karakterler arama için önerilen yol değildir. –

cevap

1

Sorunum, kullanılan sorgu türündeydi. QueryStringQuery, bir belgeden her alanı denetler. Bir matchQuery kullanarak performans artırıldı. Yardımcı yorumlar için teşekkürler.