创建一个与其他字段串联的关键字字段
Create a keyword field concatenated of other fields
我有一个包含 3 个字段映射的索引。假设 f1
、f2
和 f3
.
我想要一个具有 f1
、f2
和 f3
值的 concatenation 的新关键字字段,以便能够通过它进行聚合以避免检查搜索结果时出现大量嵌套循环。
我看到这可以通过源转换来实现,但是自elastic v5以来,这个功能被删除了。
使用的 ElasticSearch 版本:6.5
问:如何在 ElasticSearch v 6.5 中实现连接?
在 ES 5 之前确实有源代码转换,但从 ES 5 开始,现在有一个更强大的功能,称为 ingest nodes,可以让您轻松实现您需要的功能:
首先,使用 set
processor 定义摄取管道,这将帮助您将三个字段连接成一个:
PUT _ingest/pipeline/concat
{
"processors": [
{
"set": {
"field": "field4",
"value": "{{field1}} {{field2}} {{field3}}"
}
}
]
}
然后您可以使用该管道为文档编制索引:
PUT index/doc/1?pipeline=concat
{
"field1": "1",
"field2": "2",
"field3": "3"
}
索引文档将如下所示:
{
"field1": "1",
"field2": "2",
"field3": "3",
"field4": "1 2 3"
}
在为第一个文档编制索引之前,请务必确保为 field4
创建具有适当映射的索引。
我有一个包含 3 个字段映射的索引。假设 f1
、f2
和 f3
.
我想要一个具有 f1
、f2
和 f3
值的 concatenation 的新关键字字段,以便能够通过它进行聚合以避免检查搜索结果时出现大量嵌套循环。
我看到这可以通过源转换来实现,但是自elastic v5以来,这个功能被删除了。
使用的 ElasticSearch 版本:6.5
问:如何在 ElasticSearch v 6.5 中实现连接?
在 ES 5 之前确实有源代码转换,但从 ES 5 开始,现在有一个更强大的功能,称为 ingest nodes,可以让您轻松实现您需要的功能:
首先,使用 set
processor 定义摄取管道,这将帮助您将三个字段连接成一个:
PUT _ingest/pipeline/concat
{
"processors": [
{
"set": {
"field": "field4",
"value": "{{field1}} {{field2}} {{field3}}"
}
}
]
}
然后您可以使用该管道为文档编制索引:
PUT index/doc/1?pipeline=concat
{
"field1": "1",
"field2": "2",
"field3": "3"
}
索引文档将如下所示:
{
"field1": "1",
"field2": "2",
"field3": "3",
"field4": "1 2 3"
}
在为第一个文档编制索引之前,请务必确保为 field4
创建具有适当映射的索引。