在 Mapping 里面,将 dynamic 参数设置成 strict 可以拒绝索引包含未知字段的文档。 此条 Tips 由 medcl 贡献。

ES全英文或全字母查询不到数据

Elasticsearch | 作者 menzhipeng | 发布于2018年10月19日 | 阅读数:8582

ES全英文或全字母查询不到数据,但是真的是有数据在
已邀请:

rochy - rochy_he

赞同来自: menzhipeng

默认来说系统会把每个分词结果进行小写处理,也就是说 JavaScript 存储的时候是 javascript
你搜索使用的 wildcardQuery 属于 term 级别的匹配,你搜索的内容是 *JavaScript*,这个是匹配不到结果的,*javascript* 则可以匹配到
 
综上,你对 key 进行小写处理即可

rochy - rochy_he

赞同来自:

你得说一下你的查询方式和数据,已知的可能是你搜索的内容是数字或者英文的一部分,没有匹配到是因为分词原因;
如果搜索的内容和库中的内容一致,则可能是大小写原因。

menzhipeng

赞同来自:

数据中的内容是: JavaScript    我搜索的关键词是  javascript  和  JavaScript 两种
1.第一个全小写的是可以搜索到的,  第二个就搜不到
 
2. 
 
搜索代码:

QueryBuilder multiMatch = QueryBuilders.wildcardQuery("articleTitle","*"+key+"*");
QueryBuilder multiMatch2 = QueryBuilders.wildcardQuery("articleContent","*"+key+"*"); 
QueryBuilder mulQuerys = QueryBuilders.boolQuery().should(multiMatch).should(multiMatch2); builder.setQuery(QueryBuilders.boolQuery().must(mulQuerys));
 

menzhipeng

赞同来自:

现在有个问题,更新ES数据会把实体里的全部字段都更新,有么有方式可以按照固定字段进行更新

God_lockin

赞同来自:

https://www.elastic.co/guide/e ... .html
更新部分内容的文档,有空瞅一眼?

要回复问题请先登录注册