我正在试验ECS -弹性通用模式。我们需要突出显示error.stack_trace字段的文本搜索。该字段是一个多字段映射定义的这里。
我刚刚做了一个简单的测试,运行Elasticsearch和Kibana7.17.4,一个字段定义为多字段,另一个字段定义为单字段。
PUT simple-index-01
{
"mappings": {
"properties": {
"stack_trace01": { "type": "text" },
"stack_trace02": {
"fields": {
"text": {
"type": "text"
}
},
"type": "wildcard"
}
}
}
}
POST simple-index-01/_doc
{
"@timestamp" : "2022-06-07T08:21:05.000Z",
"stack_trace01": "java.lang.NullPointerException: null",
"stack_trace02": "java.lang.NullPointerException: null"
}

不突出多个领域是基巴纳期望的行为吗?
发布于 2022-06-08 06:12:33
如documentaion中所述,wildcard类型将无法使用全文查询进行搜索(它是关键字类型家族的一部分):
wildcard字段类型是用于使用grep类wildcard和regexp查询搜索非结构化机器生成的内容的专用关键字字段。
因此,当您尝试下面的查询时,它将不会返回结果,这就是为什么在“发现”中没有将您的stack_trace02字段调高的原因。
POST simple-index-01/_search
{
"query": {
"match": {
"stack_trace02": "null"
}
}
}但是下面的查询将给出结果:
{
"query": {
"wildcard": {
"stack_trace02": {
"value": "*null*"
}
}
}
}您可以创建如下所示的索引映射,并且父类型字段应该是text类型:
PUT simple-index-01
{
"mappings": {
"properties": {
"stack_trace01": {
"type": "text"
},
"stack_trace02": {
"fields": {
"text": {
"type": "wildcard"
}
},
"type": "text"
}
}
}
}

如果要搜索通配符类型的查询,现在可以使用stack_trace02.wildcard。
对于类似的行为,已经有了开放的问题,但不是针对wildcard类型的。
https://stackoverflow.com/questions/72532081
复制相似问题