搜索关键词的疑问

来源: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 自带的,用不好容易出错。

0
0

Elastic Stack从入门到实践,动手搭建数据分析系统

有了Elastic Stack,不用写一行代码,你也可以玩转大数据分析!

1361 学习 · 397 问题

查看课程