1

我需要运行以下查询:

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

但我不能用 spring-data-elasticsearch 轻松运行它。

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

1 回答 1

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 类复制和修改的代码

使用存储库:

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

从RepositoryTest 类复制和修改的代码

2) 是 Spring Data Elasticsearch 使用 QueryBuilder 接口来处理 elasticsearch 部分的所有 Query DSL 请求。

于 2015-04-07T14:09:10.283 回答