2015-04-06 2 views
0

Je dois exécuter la requête suivante:ressort données ElasticSearch avec const_score

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

, mais je ne peux pas facilement exécuter ce avec ressort données ElasticSearch.

  1. Y at-il un moyen de le faire?
  2. Est-ce que toutes les requêtes élastiques de recherche DSL sont bien supportées par spring-data-elasticsearch?

Répondre

0

1) Oui

l'aide du modèle:

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

code copié et modifié de TemplateTest Class

l'utilisation du référentiel:

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

code copié et modifié de RepositoryTest Class

2) Oui Données de ressort Elasticsearch utilise l'interface QueryBuilder pour traiter toutes les requêtes DSL de requête pour la partie elasticsearch.

+0

merci pour votre réponse et bonnes nouvelles. Je suis étrange que pourquoi je ne peux pas trouver "constantScoreQuery" dans repo [spring-data-elasticsear] (https://github.com/spring-projects/spring-data-elasticsearch). en fait je cours "grep -r constant *" dans le répertoire de spring-data-elasticsearch soruce code. – zhihuifan

+0

Oui, je vais ajouter des cas de test pour couvrir cela. THX –