如何在弹性搜索中为文本字段调整max_gram?

How to adjust max_gram for text field in elastic search?

问题是,我在弹性搜索文档中有一个 max_gram = 20 的电子邮件字段,所以如果我 email_address 的字符超过 max_gram,则不会在搜索查询中找到,我知道我可以在该字段上添加 .sort 以搜索整个文本,但如果我输入的电子邮件超过 max_gram 而不是整个电子邮件,它将永远找不到。那我该怎么办?

首先,您不应该在 mail-id 上创建 gram,elasticsearch 已经提供了 UAX_URL email tokenizer 来正确标记邮件 id。

不过,如果您不想将其更改为上述推荐方式,那么您应该更改 index.max_gram_diff 设置并将 max_gram 值增加到更高的数值。

注意,max_gram_diff是min gram和max gram的区别。