我正在尝试通过grails插件向elasticsearch添加自定义分析器。我能够使用域上的“可搜索”将使用过的分析仪更改为通用分析仪:
static searchable = {
all = [analyzer: 'snowball']
}
但无法让它知道costum分析仪。目前还不清楚如何将REST API中的以下json转换为groovy闭包:
PUT /my_index
{
"settings": {
"analysis": {
"filter": {
"my_synonym_filter": {
"type": "synonym",
"synonyms": [
"british,english",
"queen,monarch"
]
}
},
"analyzer": {
"my_synonyms": {
"tokenizer": "standard",
"filter": [
"lowercase",
"my_synonym_filter"
]
}
}
}
}
}
this问题似乎有同样的问题,但答案不起作用,this回答表明这可能不可行,但这似乎不合理,因为设置自定义分析器是非常基本的。
有什么建议吗?
答案 0 :(得分:0)
我认为有两种方法可以帮助您实现这一目标。
第一种方法是使用注入的elasticSearchHelper
浏览low level API并直接访问ES客户端。
elasticSearchHelper.withElasticSearch { client ->
// Do some stuff with the ElasticSearch client
client.admin()
.indices()
.prepareCreate(indexName)
.setSettings(settings) <--- your settings/analyzers go here
.execute()
.actionGet()
}
第二种方法涉及使用ElasticSearchAdminService
service的未记录的功能,即createIndex()
method,它允许您在创建新索引时传递所需的设置和分析器。后者基本上与上面的第一个选项完全相同,但您可以直接使用Grails服务。