【问题标题】:creating settings of index using elastic4s使用 elastic4s 创建索引设置
【发布时间】:2020-05-15 23:18:05
【问题描述】:

我有一些课:

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

  "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 做到这一点?

【问题讨论】:

    标签: scala elasticsearch elastic4s query-analyzer


    【解决方案1】:

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

    CreateIndexRequest(repository.indexName, analysis = Option(ngramAnalyzer), mapping = repository.mapping)
          .shards(repository.shards)
          .replicas(repository.replicas)
    

    我这样初始化我的分析器:

    val ngramAnalyzer = Analysis(
        List(CustomAnalyzer(
          name = "ngram_analyzer",
          tokenizer = "ngram",
          charFilters = Nil,
          tokenFilters = List("lowercase")
        ))
      )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      • 2021-09-19
      相关资源
      最近更新 更多