[英]Convert elasticsearch bool query into Java
GET feeds/_search
{
"query": {
"bool": {
"should": [
{
"nested": {
"path": "comment",
"query": {
"match": {
"comment.c_text": "hey"
}
},"inner_hits": {
"highlight": {
"require_field_match": "true"
}
}
}
},
{
"term": {
"title": {
"value": "hey"
}
}
},
{
"term": {
"body": {
"value": "hey"
}
}
}
]
}
}
}
我是 Elasticsearch 的新手,我在 kibana 中得到了我想要的結果,現在我想在我的 Java 應用程序中使用這個查詢,因為我想在我的 spring-boot 應用程序中使用這個 bool 搜索查詢。
誰能告訴我如何將此查詢轉換為 Java?
您可以使用以下依賴項使用 ES 7.17.3 版本的 Java Rest 客戶端
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>7.17.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>
</dependency>
下面是Java代碼:
Query bodyTermQuery = TermQuery.of(tq -> tq.field("body").value("hey"))._toQuery();
Query titleTermQuery = TermQuery.of(tq -> tq.field("title").value("hey"))._toQuery();
Query matchQuery = MatchQuery.of(mq -> mq.field("comment.c_text").query("hey"))._toQuery();
Query nestedQuery = NestedQuery.of(nq -> nq.path("comment").query(matchQuery)
.innerHits(ih -> ih.highlight(h -> h.requireFieldMatch(true))))._toQuery();
SearchResponse<Object> response = client.search(
s -> s.index("feeds").query(q -> q.bool(b -> b.should(nestedQuery, titleTermQuery, bodyTermQuery))),
Object.class);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.