elasticsearch 的模糊查询语法

3 min read

{
"wildcard": {
"content.keyword": "你好"
}
}

这样的语法是可以实现模糊搜索的,因为 content 是富文本内容。如果 content 的内容文本大小超过 ignore_above 的设定,那就不会被索引,也就是即使有关键词匹配到,文档也不会被搜索到 ,而 ignore_above 也是有大小限制,请问这种需求应该怎么处理

这种需求可以尝试使用 ngram 或者 edge_ngram。通过将文本进行分词,并将每个分词的子串存储到倒排索引中,在查询时将查询词也进行相同的处理,从而实现模糊搜索。同时需要注意的是,使用 ngram 或者 edge_ngram 会增加索引大小和查询响应时间,需要权衡利弊决定是否使用。