搜索关键词的疑问
来源:5-4 -字段类查询简介及match-query

webcom
2020-06-25
com.dct.web.controller.UserController:111
全路径类名:行号 => java_class、code_line两个字段
遇到个问题就是;
假如按类名来搜索,只能用com.dct.web.controller.UserController
输入UserController查询不到结果,其原因是什么呢?
搜索的词也要进行分词,是因为这个com.dct.web.controller.UserController这个词,中间带有点好,没法切割分词吗?
请帮忙解答一下!顺便问下为啥index-pattern每个字段都多了1个“字段名.keyword”的字段?
基本情况介绍如下:
启动logstash时指定的索引模板template.json,片段如下:
“java_class”:{“type”:“text”, “index”: “true”},
“code_line”:{“type”: “integer”},
生成后的mappings结构如下:
“code_line”: {
“type”: “text”,
“fields”: { “keyword”: { “type”: “keyword”, “ignore_above”: 256 } }
},
“java_class”: {
“type”: “text”,
“fields”: { “keyword”: { “type”: “keyword”, “ignore_above”: 256 } }
},
index-pattern:
java_class string,多出了个字段:java_class.keyword string
code_line string,多出了个字段:code_line.keyword string
1回答
-
rockybean
2020-06-28
1.点默认不会作为 stop word 来分词,如果是偶尔查一下,你可以用正则表达式或者模糊匹配的方式来搜索,否则可以用自定义分词的方法。可以参看下面两个文档
https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-pattern-capture-tokenfilter.html
https://stackoverflow.com/questions/30944215/java-method-name-analyzer
2.字段类型这个看起来是你设置的 template 没有生效导致的,建议你直接去 es 里面创建对应的 template,不要用 logstash 自带的,用不好容易出错。
00
相似问题
回答 1
回答 2