我正在从java应用程序索引请求日志,日志包含关键方法名称和所用时间。方法名称是完整的方法名称,如
com.example.domain.File[] com.example.service.FolderService.getFiles() throws com.example.Exception
为了搜索方法名称或类型(如getfiles或File),我认为我需要定义一个自定义分析器,以便对包和方法名称进行标记。这样的分析仪是否已经存在?
我确认我可以将字段映射为not_analyzed并使用通配符进行搜索。但是文档说使用通配符不是很有效,建议正确准备索引。
寻找其他建议,想法。
答案 0 :(得分:0)
代码是您项目的一部分,还是您刚刚作为输入阅读的内容?
如果它在您的项目中,您可以使用reflection完成此操作。 Spring框架能够做到这一点,看看this answer。
答案 1 :(得分:0)
我认为你还没有设定所有要求。这就是我的开始:
PUT /index
{
"settings": {
"analysis": {
"filter": {
"code": {
"type": "pattern_capture",
"preserve_original": 1,
"patterns": [
"(\\p{Ll}+|\\p{Lu}\\p{Ll}+|\\p{Lu}+)",
"(\\d+)"
]
}
},
"analyzer": {
"code": {
"tokenizer": "pattern",
"filter": [
"code",
"lowercase"
]
}
}
}
},
"mappings": {
"test": {
"properties": {
"code": {
"type": "string",
"analyzer": "code"
}
}
}
}
}
测试数据:
POST /index/test/1
{
"code": "com.example.domain.File[] com.example.service.FolderService.getFiles() throws com.example.Exception"
}
查询:
GET /index/test/_search
{
"query": {
"match": {
"code": "File"
}
}
}