Elastic4s 中的多字段 5.x
Multifield in Elastic4s 5.x
我目前正在使用 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 []
答案 and documentation here https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html 说使用 "fields" 代替,但我找不到如何在 elastic4s 中执行此操作。
在 Elasticsearch 中,任何多字段都有一个 primary 字段,它有点像父字段,然后它有辅助字段。主要字段(主要和次要是我的术语)通过 a
访问,次要字段通过 a.b
、a.c
等访问。
这可能不是您最初想象的多字段的样子,因为您可能只是认为有 a
、b
、c
作为兄弟姐妹顺序。所以值得理解这一点。
在elastic4s中,你可以在任何你想要的字段上使用.fields
,然后这些字段将与parent组合成为一个多字段。因此,您重写的示例将是。
client.execute {
createIndex("foo").mappings(
mapping("bar").fields(
textField("baz").fields(
textField("inner1") analyzer PatternAnalyzer,
textField("inner2") index NotAnalyzed
)
)
)
}
注意 as
是 fields
的别名,我认为 fields
更具可读性,所以我在这里使用它。
我目前正在使用 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 中,任何多字段都有一个 primary 字段,它有点像父字段,然后它有辅助字段。主要字段(主要和次要是我的术语)通过 a
访问,次要字段通过 a.b
、a.c
等访问。
这可能不是您最初想象的多字段的样子,因为您可能只是认为有 a
、b
、c
作为兄弟姐妹顺序。所以值得理解这一点。
在elastic4s中,你可以在任何你想要的字段上使用.fields
,然后这些字段将与parent组合成为一个多字段。因此,您重写的示例将是。
client.execute {
createIndex("foo").mappings(
mapping("bar").fields(
textField("baz").fields(
textField("inner1") analyzer PatternAnalyzer,
textField("inner2") index NotAnalyzed
)
)
)
}
注意 as
是 fields
的别名,我认为 fields
更具可读性,所以我在这里使用它。