【问题标题】:Multifield in Elastic4s 5.xElastic4s 5.x 中的多字段
【发布时间】:2017-03-03 07:34:48
【问题描述】:

我目前正在使用 Elastic4s v5.0,它仍然具有用于以多种方式索引字段的多字段类型。

elasticClient.execute(createIndex("foo") mappings (
  mapping("bar").as(
    multiField("baz").as(
      textField("baz") analyzer myAnalyzer,
      textField("original") index NotAnalyzed
    )
  )
)

但是,我收到以下错误:

No handler for type [multi_field] declared on field []

答案ElasticSearch 5: MapperParserException with multi_field 和此处的文档https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html 说要改用“字段”,但我在 elastic4s 中找不到如何做到这一点。

【问题讨论】:

    标签: scala elasticsearch elastic4s


    【解决方案1】:

    在 Elasticsearch 中,任何多字段都有一个 primary 字段,它有点像父字段,然后是辅助字段。主要字段(顺便说一下,主要和次要是我的术语),通过a 访问,次要字段通过a.ba.c 等访问。

    这可能不是您最初想象的多字段的方式,因为您可能只是认为有abc 作为兄弟姐妹,就像一种序列。所以值得理解。

    在elastic4s中,你可以在任何你想要的字段上使用.fields,然后这些字段将与parent组合成一个多字段。所以你重写的例子是。

      client.execute {
        createIndex("foo").mappings(
          mapping("bar").fields(
            textField("baz").fields(
              textField("inner1") analyzer PatternAnalyzer,
              textField("inner2") index NotAnalyzed
            )
          )
        )
      }
    

    注意asfields 的别名,我认为fields 更具可读性,所以我在这里使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-28
      • 1970-01-01
      • 2011-10-30
      • 2021-07-13
      • 1970-01-01
      相关资源
      最近更新 更多