如何在spring-data弹性搜索中为嵌套对象构建搜索查询?

时间:2016-09-19 10:07:07

标签: java elasticsearch spring-boot spring-data-elasticsearch

我的搜索查询如下:

curl -XGET "http://localhost:9200/imagesearchservice/images    /_search?pretty=true" -d '
{
  "query": {
    "bool": {
        "must": [
           {
               "nested": {
                  "path":"tags",
                  "query": {
                    "bool": {
                      "must": [
                        {"match_all" : {} }
                      ],
              "filter" : {
                          "terms" : {
                             "tags.tagName" : ["star"]
                            }
                       }
                    }
                  }
                }
           }
    ]
      }
    }
 }'

我尝试过以下操作,但它没有用。

SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
                .withFilter(boolQuery().must(termsQuery("tags.tagName", tagNames)))
                .build();

我正在使用Elastic Search v2.x。有人可以告诉我如何使用nativesearchquerybuilder构建上述搜索查询吗?

1 个答案:

答案 0 :(得分:1)

我会做这样的事情:

  BoolQueryBuilder booleanQuery = new BoolQueryBuilder();
  booleanQuery.must(termsQuery("tags.tagName", tagNames));
  myElasticSearchRepository.search(booleanQuery)

myElasticSearchRepository是扩展ElasticsearchRepository

的interfce