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

求教各位大佬,实在没辙了。。。

Elasticsearch | 作者 langwang123 | 发布于2021年09月17日 | 阅读数:1978

索引中用的是ik_max_word,然后在搜索匹配的时候,有的词却匹配不到任何信息(有的可以),比如“雅诗兰黛”匹配不出,但“诗兰黛”、“兰黛”、“黛”都可以匹配到,去查了索引中的分词,是“雅诗兰黛”。如果匹配的时候用standard或者smartcn倒是可以匹配到。用了match、match_phrase、match_phrase_prefix都是同样的问题。想了很多办法都无法解决,网上也找不到解决的方法,请问各位有没有知道解决方法的或者有遇到类似情况的。谢谢谢谢谢谢!!!!
已邀请:

zmc - ES PAAS、JuiceFS

赞同来自: langwang123 liaosy

首先需要理解下match的过程,match就是拿的分词的结果进行匹配的。
例如:ES中的数据,“雅诗兰黛”会拆分成 雅诗,兰黛,兰,黛 等
然后是你的输入:“雅诗兰黛”
检查你的输入用的什么分词,以及分词结果是什么...
然后进行匹配。
 
也就是说,你需要观察下 ES中存的词的分词后的结果,以及“输入”的分词结果,
例如你的输入是“雅诗兰黛”,根本没有拆分,然后ES中ik_max_word拆分后是 雅诗,兰黛,兰,黛,并没有“雅诗兰黛”这个词,自然就查不到了。这种情况如果想要匹配到,那就到词库里加上这个词就好了
 
 
 

要回复问题请先登录注册