![](/img/trans.png)
[英]Elastic Ingest Pipeline split field and create a nested field
[英]How split a field to words by ingest pipeline in Kibana
我创建了一个如下的摄取管道来将字段拆分为单词:
POST _ingest/pipeline/_simulate
{
"pipeline": {
"description": "String cutting processing",
"processors": [
{
"split": {
"field": "foo",
"separator": "|"
}
}
]
},
"docs": [
{
"_source": {
"foo": "apple|time"
}
}
]
}
但它将字段拆分为字符:
{
"docs" : [
{
"doc" : {
"_index" : "_index",
"_type" : "_doc",
"_id" : "_id",
"_source" : {
"foo" : [
"a",
"p",
"p",
"l",
"e",
"|",
"t",
"i",
"m",
"e"
]
}
}
}
]
}
如果我用逗号替换分隔符,同一管道将字段拆分为单词:
POST _ingest/pipeline/_simulate
{
"pipeline": {
"description": "String cutting processing",
"processors": [
{
"split": {
"field": "foo",
"separator": ","
}
}
]
},
"docs": [
{
"_source": {
"foo": "apple,time"
}
}
]
}
那么输出将是:
{
"docs" : [
{
"doc" : {
"_index" : "_index",
"_type" : "_doc",
"_id" : "_id",
"_source" : {
"foo" : [
"apple",
"time"
]
}
}
}
]
}
当分隔符为“|”时,如何将字段拆分为单词? 我的下一个问题是如何将此摄取管道应用于现有索引? 我试过这个解决方案,但它对我不起作用。
解决方案相当简单:只需逃避您的分隔符。
由于拆分处理器中的separator
字段是一个正则表达式,因此您需要转义特殊字符,例如|
.
您还需要将其转义两次。
所以你的代码只缺少双重转义部分:
POST _ingest/pipeline/_simulate
{
"pipeline": {
"description": "String cutting processing",
"processors": [
{
"split": {
"field": "foo",
"separator": "\\|"
}
}
]
},
"docs": [
{
"_source": {
"foo": "apple|time"
}
}
]
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.