【问题标题】:Elasticsearch - split by comma - split filter LogstashElasticsearch - 用逗号分割 - 分割过滤器 Logstash
【发布时间】:2020-06-09 11:31:20
【问题描述】:

我有一个值是动态的字段。我想将空格分隔的标记存储在 completion suggester 的数组字段中

假设我的字段valhi how are you,那么我想要一个带有[hi how are you, how are you, are you, you] 的数组

我尝试使用split filter 作为我在csv 中的数据。我无法做到这一点。无论如何,只有 ES,Logstash 可以做到这一点。

【问题讨论】:

标签: elasticsearch logstash


【解决方案1】:

根据我链接到的解决方案,您可以实现以下所需。

首先创建一个摄取管道,利用script 处理器构建所需的输入数组:

PUT _ingest/pipeline/csv-parser
{
  "processors": [
    {
      "csv": {
        "field": "message",
        "target_fields": [
          "val",
          "val_type",
          "id"
        ]
      }
    },
    {
      "script": {
        "source": """
          def tokens = new ArrayList(Arrays.asList(/\s+/.split(ctx.val)));
          def nbTokens = tokens.size();
          def input = [];
          for (def i = nbTokens; i > 0; i--) {
            input.add(tokens.join(" "));
            tokens.remove(0);
          }

          ctx.val = [
            'input': input,
            'contexts': [
              'type': [ctx.val_type]
            ]
          ]
          """
      }
    },
    {
      "remove": {
        "field": "message"
      }
    }
  ]
}

然后你可以像这样索引文档:

PUT index/_doc/1?pipeline=csv-parser
{
  "message": "hi how are you,seller,10223667"
}

生成的文档将如下所示:

GET index/_doc/1
->
{
    "val" : {
      "input" : [
        "hi how are you",
        "how are you",
        "are you",
        "you"
      ],
      "contexts" : {
        "type" : [
          "seller"
        ]
      }
    },
    "val_type" : "seller",
    "id" : "10223667"
}

【讨论】:

  • 你帮了我很多。我的麻烦是如何使它成为语法正确的logstash conf的一部分?我以前的问题也有同样的问题。是否有任何文档可以参考 logstash conf 中的脚本过滤器?
  • 那么你真的不想使用摄取管道吗?
  • 如果我使用摄取管道,我无法从 CSV 加载我的构建数据。正确的?当我像在实时生产中一样基于加载时,需要摄取管道。不是吗?
  • 使用摄取管道,您绝对可以导入您的 CSV(感谢 csv 处理器)...您的 Logstash 配置中没有逻辑,而是摄取管道中的逻辑,这使您的 Logstash配置更简单,只需从 CSV 文件中读取并将其发送给 ES 来完成这项工作
  • 好的,现在您需要将join(" ") 替换为join(' ')(带单引号)
猜你喜欢
  • 2022-03-18
  • 2020-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多