簡體   English   中英

使用 Java api 進行彈性搜索查詢

[英]Elastic search queries with Java api

當找到一個與該值匹配的對象返回整個嵌套對象時,我現在如何只用我的代碼返回匹配的對象?

  private def queryBuilder(
      field: String,
      value: String,
      parent: Option[String] = None
  ): BoolQueryBuilder = {
    val boolQuery: BoolQueryBuilder = QueryBuilders.boolQuery()
    parent match {
      case Some(parentName) =>
        boolQuery.filter(
          QueryBuilders
            .nestedQuery(
              parentName,
              QueryBuilders
                .boolQuery()
                .must(QueryBuilders.matchQuery(field, value)),
              ScoreMode.None
            )
        )
      case None => boolQuery.must(QueryBuilders.matchQuery(field, value))
    }
  }

為了僅返回匹配的嵌套文檔,您可以將inner_hit添加到嵌套查詢中。

例如

{
  "query": {
    "nested": {
      "path": "nested_field",
      "query": {
        "match": { "nested_field.field1": "value_to_match" }
      },
      "inner_hits": {} 
    }
  }
}

作為響應,您將找到僅包含匹配嵌套文檔的inner_hits部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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