2016-07-27 123 views
0

如何使用elasticsearch術語查詢在Java中,以實現以下目標:?如何建立elasticsearch條件查詢用Java

curl -XGET localhost:9200/tweets/_search -d '{ 
    "query" : { 
    "terms" : { 
     "user" : { 
     "index" : "users", 
     "type" : "user", 
     "id" : "2", 
     "path" : "followers" 
     } 
    } 
    } 
}' 
+1

如果您對java答案感興趣,您可能需要添加java標記。另外,請提供一些關於您正在嘗試執行的操作的詳細信息,以及您的操作方式與預期不符。 – Hulk

回答

3

你可以做這樣的ES 2.3:

TermsLookupQueryBuilder terms = QueryBuilders.termsLookupQuery("user") 
    .lookupIndex("users") 
    .lookupType("user") 
    .lookupId("2") 
    .lookupPath("followers"); 

client.prepareSearch("tweets") 
    .setQuery(terms) 
    .execute().actionGet(); 

在ES 5,你就可以做到這一點是這樣的:

TermsLookup termsLookup = new TermsLookup("users", "user", "2", "followers"); 
TermsQueryBuilder terms = QueryBuilders.termsLookupQuery("user", termsLookup); 

client.prepareSearch("tweets") 
    .setQuery(terms) 
    .execute().actionGet(); 
+0

非常感謝。我使用Elasticsearch 2.3.3,有5個參數:術語查看條款查看=新的術語Lookup(index,type,id,routing,path,queryParseContext),在這種情況下應該使用什麼路徑和queryParseContext? –

+0

http ://stackoverflow.com/questions/38605442/how-to-use-elasticsearch-has-child-query-in-java我需要你的幫助。 –

+0

你有沒有試過把它設置爲空? – Val

0

我找到了答案硬的方式後:

TermsLookupQueryBuilder tlqb = QueryBuilders 
      .termsLookupQuery("user") 
      .lookupIndex("users") 
      .lookupType("user") 
      .lookupId("2") 
      .lookupPath("followers"); 
+0

這與我的回答有什麼不同? – Val

+0

不用擔心,很高興你明白了! – Val