我试图在ElasticSearch中从这个结构中查询字段value.value,它是一个JSON字符串。
我写了这个查询来缩小搜索范围:
{
"query": {
"bool": {
"must": [
{
"term": {
"valueType": {
"value": "VARIABLE",
"boost": 1
}
}
},
{
"term": {
"intent": {
"value": "CREATED",
"boost": 1
}
}
},
{
"term": {
"recordType": {
"value":"EVENT",
"boost": 1
}
}
},
{
"term": {
"position": {
"value":16185492,
"boost": 1
}
}
}
]
}
}
"_source": true
}
但是我不知道如何从字段value.value中只获取ID_TRANSACTION=304的记录。此字段是类型关键字。这里的Map:
1条答案
按热度按时间pgky5nke1#
实际上,理想情况下,我们应该有一个带有
json
处理器的摄取管道,用于将value.value
内容解析为您可以查询的特定字段。然而,问题是Map是由Zeebe用
dynamic: strict
定义的,这意味着不可能在文档中添加新字段。此外,也不能使用value.value
作为包含解析的JSON字段的对象,因为value.value
被定义为keyword
,并且不能更改。实现这一点的唯一方法是更改Zeebe中存在的
record-variable
index template,以允许创建新字段。如果你有权利这样做,或者如果你知道有人可以为你做,这里是如何做到这一点。
首先,创建一个摄取管道,将
value.value
中的JSON内容解析为可以查询的单独字段:然后,像这样修改
zeebe-record-variable-template.json
文件:当创建下一个
zeebe-record_variable_8.2.12_*
每日索引时,它将使用新的摄取管道来获得新的Map,该管道将解析value.value
内容并将其放入您将能够查询的value.valueJson
中。