elasticsearch 如何在Elasticsearch中将木瓦标记存储到文档的数据字段?
我一直在寻找一种方法,在字段数据被解析为Logstash时,将shingle令牌过滤器创建的令牌附加到字段数据中。到目前为止,我找到的所有文档主要涉及如何使用shingle标记过滤器来使用REST API分析已经记录和索引的数据的文本,但我还无法找到在索引时将所述文本附加到数据字段值的方法 简言之,我想了解的是:假设我有一条消息elasticsearch 如何在Elasticsearch中将木瓦标记存储到文档的数据字段?,elasticsearch,logstash,elasticsearch,Logstash,我一直在寻找一种方法,在字段数据被解析为Logstash时,将shingle令牌过滤器创建的令牌附加到字段数据中。到目前为止,我找到的所有文档主要涉及如何使用shingle标记过滤器来使用REST API分析已经记录和索引的数据的文本,但我还无法找到在索引时将所述文本附加到数据字段值的方法 简言之,我想了解的是:假设我有一条消息 存储木瓦 应用最大和最小木瓦大小为2的木瓦过滤器,我们得到以下标记: 存储,以及木瓦 我想找到一种方法,将消息解析为Logstash,以便将其索引如下: { .
存储木瓦
应用最大和最小木瓦大小为2的木瓦过滤器,我们得到以下标记:
存储
,以及木瓦
我想找到一种方法,将消息解析为Logstash,以便将其索引如下:
{
...
"message": "STORE THE SHINGLES",
"shingle_2": ["STORE THE", "THE SHINGLES"],
...
}
如果这是不可能的,那么我希望是否有一种方法可以将这些木瓦数据附加到已经记录和索引的数据中,如下所示:
{
...
"message": "STORE THE SHINGLES",
...
}
……在这方面:
{
...
"message": "STORE THE SHINGLES",
"shingle_2": ["STORE THE", "THE SHINGLES"],
...
}
提前感谢您的帮助或建议 首先,分析过程发生在ES内部,就在您为文档编制索引的那一刻,因此Logstash不可能知道任何情况 第二件事是,无论您配置了什么样的分析过程,ES都不会以任何方式修改您发送的源文档 在我看来,您唯一的选择是使用
消息
字段的内容点击,解析响应并修改源文档,然后将其索引到ES中
例如,假设您的文档如下所示:
{
...
"message": "STORE THE SHINGLES",
...
}
首先,你可以称之为
POST _analyze
{
"analyzer" : "your_shingle_analyzer",
"text" : "STORE THE SHINGLES"
}
您将得到以下响应:
{
"tokens" : [ {
"token" : "STORE THE",
"start_offset" : 0,
"end_offset" : 9,
"type" : "<ALPHANUM>",
"position" : 0
}, {
"token" : "THE SHINGLE",
"start_offset" : 10,
"end_offset" : 21,
"type" : "<ALPHANUM>",
"position" : 1
} ]
}
感谢您抽出时间回答!我目前正在制作一个自定义的shell脚本,将POST请求作为我的每个文本片段的curl调用发送,并将它们作为字典文件本地存储,以便稍后使用Logstash和translate筛选器进行追加。是的,这也会起作用,关键是在索引到ES之前需要这样做。是的,明白了!
PUT your_index/your_type/1234
{
...
"message": "STORE THE SHINGLES",
"shingle_2": ["STORE THE", "THE SHINGLES"],
...
}