Сервис AWS ElasticSearch - какие стеммеры я могу использовать?
Пытаемся обеспечить множественность поисковых запросов с помощью английского стеммера, похожего на снежный ком.
А есть стандартный aws? Или мне нужно установить плагин? Я пробовал ниже 2, получив следующее:
{"error":{"root_cause":[{"type":"remote_transport_exception","reason":"[dd63ee99c9186dd4b38e282ea58cbe6b][x.x.x.x:9300][indices:admin/create]"}],"type":"illegal_argument_exception","reason":"unknown setting [index.filter.my_stemmer.language] please check that any required plugins are installed, or check the breaking changes documentation for removed settings","suppressed":[{"type":"illegal_argument_exception","reason":"unknown setting [index.filter.my_stemmer.type] please check that any required plugins are installed, or check the breaking changes documentation for removed settings"}]},"status":400
}
попытка 1:
PUT /my_index
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"filter": [
"lowercase",
"my_stemmer"
]
}
},
"filter": {
"my_stemmer": {
"type": "stemmer",
"language": "light_german"
}
}
}
}
}
а также
попытка 2:
PUT /my_index
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"filter": [
"lowercase",
"my_stemmer"
]
}
},
"filter": {
"my_stemmer": {
"type": "snowball",
"language": "English"
}
}
}
}
}
1 ответ
Получил это работает со следующим:
public void createSettingsWithEnglishStemAnalyzer() throws ExecutionException, InterruptedException, IOException {
CreateIndexRequest request = new CreateIndexRequest(indexName);
request.settings(Settings.builder()
.put("index.max_inner_result_window", 250)
.put("index.write.wait_for_active_shards", 1)
.put("index.query.default_field", "paragraph")
.put("index.number_of_shards", 3)
.put("index.number_of_replicas", 2)
.loadFromSource(Strings.toString(jsonBuilder()
.startObject()
.startObject("analysis")
.startObject("filter")
.startObject("english_stemmer")
.field("type","stemmer")
.field("name", "english")
.endObject()
.endObject()
.startObject("analyzer")
.startObject("EnglishStopWordAnalyzer")
.field("tokenizer", "standard")
.field("filter", new String[]{"lowercase","english_stemmer"})
.endObject()
.endObject()
.endObject()
.endObject()), XContentType.JSON)
);
CreateIndexResponse createIndexResponse = client.admin().indices().create(request).get();
System.out.println("Index : "+createIndexResponse.index()+" Created");
getSettingsWithAnalyzer();
}