使用const_score进行spring-data-elasticsearch

时间:2015-04-06 13:55:27

标签: elasticsearch spring-data-elasticsearch

我需要运行以下查询:

GET seg/seg/_search
{
    "query": {
        "constant_score": {
            "filter": {
                "exists": {
                    "field": "iseg"
                }
            },
                "boost": 1.2
        }
    }
}

但是我无法通过spring-data-elasticsearch轻松运行它。

  1. 有没有办法做到这一点?
  2. spring-data-elasticsearch是否支持所有elasticsearch查询DSL?

1 个答案:

答案 0 :(得分:0)

1)是

使用模板:

    SearchQuery searchQuery = new NativeSearchQueryBuilder()
            .withQuery(constantScoreQuery(existsFilter("iseg")).boost(1.2f))
            .withIndices("seg")
            .withTypes("seg")
            .build();
    // when
    Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForList(searchQuery, SampleEntity.class);

TemplateTest Class

复制和修改代码

使用存储库:

   SearchQuery searchQuery = new NativeSearchQueryBuilder()
            .withQuery(constantScoreQuery(existsFilter("iseg")).boost(1.2f))
            .withIndices("seg")
            .withTypes("seg")
            .build();
    // when
    Page<SampleEntity> page = repository.search(query);

RepositoryTest Class

复制和修改代码

2)是Spring Data Elasticsearch使用QueryBuilder接口处理弹性搜索部分的所有Query DSL请求。