1

私はここで説明したように、提案-クエリを作成したいと思います: https://www.elastic.co/guide/en/elasticsearch/reference/2.4/search-suggesters.html#search-suggestersspring-data-elasticsearchでsuggester-queryを作成する方法は?

{ 
    "query" : { 
    ... 
    }, 
    "suggest" : { 
    ... 
    } 
} 

私は春・データelasticsearchでこれを行うことができますどのように? NativeSearchQueryBuilderクラス内でこの種のクエリの設定を見つけることができませんでした。

ビルダーパターンを使用して複雑なクエリを作成するのは不快なので、ネイティブjsonを使用したくありません。短い例で

+1

'ElasticsearchTemplate.suggestを()'使うと、あなたが提案するクエリを作成することができます 'SuggestBuilder'に渡す:あなたはsearchResponseオブジェクトをデバッグする場合

BoolQueryBuilder boolQuery = QueryBuilders.boolQuery() .must(QueryBuilders.matchQuery ("description", "blue sky")); SuggestionBuilder suggestionBuilder = new TermSuggestionBuilder("description").text("blue sk"); SuggestBuilder suggestion = new SuggestBuilder().addSuggestion("my-suggest-1", suggestionBuilder); SearchRequestBuilder builder = client.prepareSearch("sample") .setTypes("test") .setQuery(boolQuery) .suggest(suggestion); SearchResponse searchResponse; try { searchResponse = builder.execute().get(); for (SearchHit hit : searchResponse.getHits().getHits()) { LOG.info("Result: " + hit.getSourceAsString()); } } catch (InterruptedException | ExecutionException e) { LOG.error("Exception while executing query {}", e); } 

、それはこのようになります。 – Val

+0

@Val私の質問の例で説明したような質問と組み合わせて提案が必要な場合はどうすればよいですか?私は同じレベルの提案と組み合わせてクエリを持つ必要があります。 – whitenexx

答えて

1

からsampleインデックスとtestタイプで、次のマッピングた:私は、クエリを持っていると思い

{ "description": "blue sky"} 

{ 
    "query" : { 
    "match": { 
     "description": "blue sky" 
    } 
    }, 
    "suggest" : { 
    "my-suggest-1" : { 
     "text" : "blue sk", 
     "term" : { 
     "field" : "description" 
     } 
    } 
    } 
} 

"test": { 
    "properties": { 
     "description": {"type": "keyword"} 
    } 
} 

とインデックス付き文書を

Java APIでboolクエリとsugを追加する必要がありますSearchRequestBuilderにGESTION:

{ 
    "took":2, 
    ..., 
    "hits":{ 
     "total":1, 
     "max_score":0.2876821, 
     "hits":[ 
     { 
      "_index":"sample", 
      "_type":"test", 
      "_id":"AV1b42zWa7i_qjvIODcL", 
      "_score":0.2876821, 
      "_source":{ 
       "description":"blue sky" 
      } 
     } 
     ] 
    }, 
    "suggest":{ 
     "my-suggest-1":[ 
     { 
      "text":"blue sk", 
      "offset":0, 
      "length":7, 
      "options":[ 
       { 
        "text":"blue sky", 
        "score":0.85714287, 
        "freq":1 
       } 
      ] 
     } 
     ] 
    } 
} 
関連する問題