elasticsearch 如何解析一个csv文件,该文件的某些字段包含seperator(逗号)作为值,elasticsearch,logstash,logstash-grok,elasticsearch,Logstash,Logstash Grok" /> elasticsearch 如何解析一个csv文件,该文件的某些字段包含seperator(逗号)作为值,elasticsearch,logstash,logstash-grok,elasticsearch,Logstash,Logstash Grok" />

elasticsearch 如何解析一个csv文件,该文件的某些字段包含seperator(逗号)作为值

elasticsearch 如何解析一个csv文件,该文件的某些字段包含seperator(逗号)作为值,elasticsearch,logstash,logstash-grok,elasticsearch,Logstash,Logstash Grok,示例消息-1112223344555,val1in6th,val2in6th,777 第六列包含一个由逗号val1in6th组成的值,val2in6th是第六列的示例值。 当我使用一个简单的csv过滤器时,这个消息被转换成8个字段。我想告诉过滤器val1in6th,val2in6th应该被视为一个值,并作为第6列的值放置。当作为第6列的输出放置时,val1in6th和val2in6th之间没有逗号是可以的。更改您的插件,不再是csv插件,而是grok filter-doc。 然后使用调试器为行创

示例消息-1112223344555,val1in6th,val2in6th,777

第六列包含一个由逗号val1in6th组成的值,val2in6th是第六列的示例值。
当我使用一个简单的csv过滤器时,这个消息被转换成8个字段。我想告诉过滤器val1in6th,val2in6th应该被视为一个值,并作为第6列的值放置。当作为第6列的输出放置时,val1in6th和val2in6th之间没有逗号是可以的。

更改您的插件,不再是csv插件,而是grok filter-doc。 然后使用调试器为行创建解析器,如下所示:

对于您的行,您可以使用以下grok表达式:

%{WORD:FIELD1},%{WORD:FIELD2},%{WORD:FIELD3},%{WORD:FIELD4},%{WORD:FIELD5},%{GREEDYDATA:FIELD6}
或:

它更改前5个字段中的数据类型


要了解如何在elastic中使用grok filter解析csv,您可以使用它,其中说明了如何将grok与摄取管道一起使用,但与logstash相同,谢谢您的回答。如果它只包含6列,那么使用这种方法是可以的。如何添加第7列?以同样的方式:%%{INT:FIELD1}、%%{INT:FIELD2}、%%{INT:FIELD3}、%%{INT:FIELD4}、%%{INT:FIELD5}、%%{GREEDYDATA:FIELD6}、%%{INT:FIELD7}您可以使用grok调试器检查解析器,就像我在回答中提到的那样,GREEDYDATA必须是最后一个字段。Greedydata会把所有东西都放到FIELD6中。所以att%{INT:FIELD6},%{INT:FIELD}…%{GREEDYDATA:rest_of_fields}@opentokix不一定。您可以从grok调试器检查它。从logstash文档中,GREEDYDATA表示*
%{INT:FIELD1},%{INT:FIELD2},%{INT:FIELD3},%{INT:FIELD4},%{INT:FIELD5},%{GREEDYDATA:FIELD6}