/ / grailsプラグインを介してelasticsearchにカスタムアナライザーを追加する-grails、elasticsearch、groovy、elasticsearch-plugin

grailsプラグイン - grails、elasticsearch、groovy、elasticsearch-pluginを介してelasticsearchにカスタムアナライザを追加する

grailsプラグインを介してelasticsearchにカスタムアナライザーを追加しようとしています。ドメインで「searchable」を使用して、使用するアナライザーを一般的なアナライザーに変更できました。

static searchable = {
all = [analyzer: "snowball"]
}

しかし、コスタムアナライザーを知ることはできません。 REST APIの次のjsonをgroovy closueに変換する方法は不明です。

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"
]
}
}
}
}
}

この 質問は同じ問題を抱えているようですが、答えは機能しません。 この 答えはそれが可能ではないかもしれないことを示唆していますが、カスタムアナライザーの設定は非常に基本的なため、それは合理的ではないようです。

助言がありますか?

回答:

回答№1は0

私はあなたがそれを達成するのに役立つと思う2つの方法があります。

最初の方法は、 低レベルAPI 注入されたを使用して elasticSearchHelper 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()
}

2番目の方法は、ドキュメント化されていない機能を使用することです。 ElasticSearchAdminService サービスつまり createIndex() 方法、設定を渡すことができます新しいインデックスを作成するときに必要なアナライザー。後者は基本的に上記の最初のオプションとまったく同じですが、Grailsサービスを直接使用できます。