首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用elastic4s创建索引设置

使用elastic4s创建索引设置
EN

Stack Overflow用户
提问于 2020-01-30 10:54:51
回答 1查看 162关注 0票数 0

我有一些课:

代码语言:javascript
复制
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

代码语言:javascript
复制
  "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做到这一点呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-31 09:12:11

好的。createIndexIfNotExists()的许多功能被废弃。所以,我使用了CreateIndexRequest,我把我的分析器:

代码语言:javascript
复制
CreateIndexRequest(repository.indexName, analysis = Option(ngramAnalyzer), mapping = repository.mapping)
      .shards(repository.shards)
      .replicas(repository.replicas)

我把我的分析器初始化如下:

代码语言:javascript
复制
val ngramAnalyzer = Analysis(
    List(CustomAnalyzer(
      name = "ngram_analyzer",
      tokenizer = "ngram",
      charFilters = Nil,
      tokenFilters = List("lowercase")
    ))
  )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59984368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档