【问题标题】:Elastic4s ngram mappingElastic4s ngram 映射
【发布时间】:2020-01-30 18:25:07
【问题描述】:

我必须使用 elastic4s 创建一个像这样的 ElasticSearch 映射:

  "mappings": {
    "properties": {
      "id": {
        "type": "keyword"
      },
      "name": {
       "type": "text",
       "analyzer": "ngram_analyzer",
       "fielddata": true
      },
      "lang": {
        "type": "keyword"
      },
      "order": {
        "type": "long"
      },
      "active": {
        "type": "boolean"
      }
      "description": {
        "type": "text"
      }
    }
  }

我可以的

def mapping: Option[MappingDefinition] =
    Some(
      properties(
        KeywordField("id"),
        KeywordField("lang"),
        BasicField("order", "long"),
        BasicField("active", "boolean"),
        TextField("description")
      )
    )

用于 id、lang、order、active 和 description。
但是,我怎样才能为name 做这样的映射。问题在于其中的analyzerfielddata

【问题讨论】:

  • 一些例子可以找到here
  • @Val,但它们看起来不像我的示例
  • 你试过TextField("name").fielddata(true).analyzer("ngram_analyzer")吗?
  • @Val,它没有用。很可能,因为您必须描述“ngram”分析器。现在的问题是如何描述分析器)
  • 当然,您需要在设置部分执行此操作(即创建您的分析仪)。但是尝试改用standard,你会发现它应该可以工作。

标签: scala elasticsearch mapping elastic4s


【解决方案1】:

你应该使用这个:

TextField("name").fielddata(true).analyzer("ngram_analyzer")

您还需要确保在索引设置中正确创建ngram_analyzer

【讨论】:

猜你喜欢
  • 2014-05-28
  • 1970-01-01
  • 1970-01-01
  • 2016-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-04
  • 1970-01-01
相关资源
最近更新 更多