2015-04-06 135 views
0

我需要运行下面的查询:弹簧数据elasticsearch与const_score

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

,但我不能轻易地用弹簧数据elasticsearch运行此。

  1. 有没有办法做到这一点?
  2. 是否所有elasticsearch查询DSL以及通过弹簧数据elasticsearch支持?

回答

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); 

代码复制并从改性

2)是春节数据Elasticsearch使用的QueryBuilder接口,用于处理所有的elasticsearch部分查询DSL请求。

+0

感谢您的回复和好消息。我很奇怪,为什么我无法在repo [spring-data-elasticsear](https://github.com/spring-projects/spring-data-elasticsearch)中找到“constantScoreQuery”。实际上我在spring-data-elasticsearch的soruce代码目录下运行“grep -r constant *”。 – zhihuifan 2015-04-09 02:52:56

+0

是的,我会添加测试用例来解决这个问题。谢谢 – 2015-04-10 09:48:51