为了使用完成功能,您需要专用一个字段,该字段将被称为完成,并且必须为其指定特殊的映射。
例如:
"mappings": { "article": { "properties": { "content": { "type": "string" }, "completion_suggest": { "type": "completion"} } }}complete_suggest字段是上面代码示例中将用于自动完成功能的字段。在此映射定义之后,必须按如下所示索引数据:
curl -XPOST localhost:9200/kodcucom/article/1 -d '{ "content": "elasticsearch", "completion_suggest": { "input": [ "es", "elastic", "elasticsearch" ], "output": "ElasticSearch" }}'然后可以如下使用Java API以获得建议:
CompletionSuggestionBuilder skillNameSuggest = new CompletionSuggestionBuilder("complete");skillNameSuggest.text("es");skillNameSuggest.field("completion_suggest");SearchResponse searchResponse = client.prepareSearch("kodcucom") .setTypes("article") .setQuery(QueryBuilders.matchAllQuery()) .addSuggestion(skillNameSuggest) .execute().actionGet();CompletionSuggestion compSuggestion = searchResponse.getSuggest().getSuggestion("complete");List<CompletionSuggestion.Entry> entryList = compSuggestion.getEntries();if(entryList != null) { CompletionSuggestion.Entry entry = entryList.get(0); List<CompletionSuggestion.Entry.Option> options =entry.getOptions(); if(options != null) { CompletionSuggestion.Entry.Option option = options.get(0); System.out.println(option.getText().string()); }}


