使用elastic4s创建索引设置 [英] creating settings of index using elastic4s
本文介绍了使用elastic4s创建索引设置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我上一些课:
class SomeClass(val client: ElasticClient, val config: Config, val configName: String)(implicit val ec: ExecutionContext)
extends ElasticSearchRepositoryWrapper[AnotherClass]{
override def mapping: Option[MappingDefinition] = Some(
properties(
KeywordField("id"),
TextField("name").fielddata(true).analyzer("ngram_analyzer"),
KeywordField("lang"),
BasicField("order", "long"),
...
)
)
我正在使用此映射通过 repository.createIndexIfNotExists()
创建索引.
现在,我必须在索引设置中创建 ngram_analyzer
:
I'm creating an index with repository.createIndexIfNotExists()
using this mapping.
Now I must create ngram_analyzer
in my index settings:
"settings": {
"index": {
"analysis": {
"analyzer": {
"ngram_analyzer": {
"filter": [
"lowercase"
],
"tokenizer": "my_tokenizer"
}
},
"tokenizer": {
"my_tokenizer": {
"token_chars": [
"letter",
"digit"
],
"min_gram": "3",
"type": "ngram",
"max_gram": "3"
}
}
}
}
如何使用elastic4s做到这一点?
How can I do that using elastic4s?
推荐答案
确定.不推荐使用 createIndexIfNotExists()
的许多功能.因此,我在分析器中放置了 CreateIndexRequest
:
OK. A lot of functions of createIndexIfNotExists()
were deprecated. So, I used CreateIndexRequest
where I put my analyzer:
CreateIndexRequest(repository.indexName, analysis = Option(ngramAnalyzer), mapping = repository.mapping)
.shards(repository.shards)
.replicas(repository.replicas)
然后我像这样初始化分析器:
And I initialized my analyzer like this:
val ngramAnalyzer = Analysis(
List(CustomAnalyzer(
name = "ngram_analyzer",
tokenizer = "ngram",
charFilters = Nil,
tokenFilters = List("lowercase")
))
)
这篇关于使用elastic4s创建索引设置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文