2014-06-15 31 views
7

Search API için dokümanlar boyunca inceledim, ancak onları yeterince açıklayıcı bulmamalarına rağmen (çok iyi yazılmış olsalar bile). Bir sorgu oluşturmaya çalışıyorum ama mevcut tüm farklı seçenekler hakkında çok az şey anlayabiliyorum ve bir sorgu oluştururken konuyla ilgili bilgi bulamıyorum ve sorguları çeviremiyorum Sorgularda çalışabiliyorum Java API'u kullanarak çalıştırabilirim.Elasticsearch Java API - yapı sorgusu

node = nodeBuilder().client(true).clusterName(CLUSTER_NAME).node(); 
client = node.client(); 
QueryBuilder qb = QueryBuilders.termQuery("name", "some string"); 
SearchResponse response = client.prepareSearch("index") // 
    .setQuery(qb) // Query 
    .execute().actionGet(); 

Ama farklı arama sonuçları üretmek:

GET index/_search 
{ 
    "query": { 
    "match" : { 
     "name" : "some string" 
    } 
    } 
} 

Ve Java kodunda ı vardır: Sense olarak

ben şu var. Göremediğim fark nedir? Ayrıca kullanımda olabilecek iyi bir bilgi kaynağı var mı?

cevap

13

İki sorgunun aynı sonuçları döndürmesini istiyorsanız, aynı sorgu türünü kullanmanız gerekir. Eğer bir termQuery gerçekleştirdiğiniz

"query": { 
    "match" : { 
     "name" : "some string" 
    } 
    } 

ancak Java kodunda

: Yani cevap

QueryBuilder qb = QueryBuilders.termQuery("name", "some string"); 

soru yerine Java kodunda bir maç sorgusu kullanın Sense sorguda bir maç sorgusu performans :

QueryBuilder qb = QueryBuilders.matchQuery("name", "some string"); 

İkinci sorunuzla ilgili olarak, biraz geniş. Kesinlikle belgelere bakıp StackOverflow'da arama yapmayı deneyebilirim. Java API ile ilgili olarak, genel bakış için here'u ve dsl thru Java'daki bilgi için here'u arardım.

Elasticsearch'ün nasıl çalıştığına ve REST API'sı aracılığıyla sorgulama mekanizmasına biraz rahatlık sağladığına dair genel bir anlayış, Java API'sini anlamakta çok yardımcı olacaktır. İyi yerlerde başlatmak için:

http://joelabrahamsson.com/elasticsearch-101/

http://exploringelasticsearch.com/

http://java.dzone.com/articles/elasticsearch-getting-started

+0

teşekkürler düzeltme çalıştı. Dokümanlarla ilgili olarak, sağladığınız bağlantılardan birini okudum ve tekrar okudum, sadece daha ince noktaları devre dışı bırakmaya çalışıyorum, sanırım sonunda oraya gideceğim. – Neilos

+1

Evet, çivilenmiş detayları elde etmek için bunu tekrar tekrar okumaya devam etmem gerektiğini buldum. ES kullanmaya başlamak oldukça kolaydır, ancak altındaki karmaşıklık zaman zaman korkutucu olabilir. –

İlgili konular