簡體   English   中英

將 elasticsearch bool 查詢轉換為 Java

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM