2015-06-19 71 views
0

我正在從java應用程序索引請求日誌,並且日誌包含關鍵方法名稱和時間。該方法的名字就像Java方法名稱分析器

com.example.domain.File[] com.example.service.FolderService.getFiles() throws com.example.Exception 

完整的方法名爲了尋找一個方法名稱或類型(如GetFiles的或文件)我相信我需要使其標記化的封裝和方法名,來定義分析。這種分析儀是否已經存在?

我證實我可以將該字段映射爲not_analyzed,並使用通配符進行搜索。但文檔說使用通配符不是很高效,並建議正確準備索引。

尋找其他建議,想法以及。

+0

你看看[菸灰(HTTP://sable.github .IO /菸灰/)?它是一個靜態分析儀,可以給你你所需要的和更多! –

回答

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" 
    } 
    } 
} 
+0

謝謝,聽起來像模式分析器是我所需要的(https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-pattern-analyzer.html) – Raylite3

0

代碼是您的項目的一部分,還是您剛剛在輸入中讀取的內容?

如果它在您的項目中,您可以使用reflection完成此操作。 Spring框架能夠做到這一點,看看this answer