2015-04-06 107 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