es 中文通配符查询

es中有个字段是中文的,如何实现这个字段像数据库一样的like查询?
例如like "中国%"能够查询出"中国地图"、"中国教育"等词。

阅读 8.2k
5 个回答

查询有一种叫做 wildcard 可以用这种,但是在全文检索引擎中用这种做检索。。很奇怪

ngram分词是个好东西

可以看看。原生自带的

{
    "settings": {
        "number_of_shards": 3,
        "number_of_replicas": 0, 
        "analysis": {
            "filter": {
                "autocomplete_filter": { 
                    "type":     "edge_ngram",
                    "min_gram": 1,
                    "max_gram": 20
                }
            },
            "analyzer": {
                "autocomplete": {
                    "type":      "custom",
                    "tokenizer": "standard",
                    "filter": [
                        "lowercase",
                        "autocomplete_filter" 
                    ]
                }
            }
        }
    }
}

如上设置就OK

楼上说的都不对,不需要分词,,,另外你不知道怎么写es语句,你可以搜索下sql转换es的插件

新手上路,请多包涵

首先字段类型设置为keyword,这样就不会分词,然后检索使用 wildcard 方式,可以使用通配符检索。
但是如楼上所说,不使用分词,实际的检索效果其实并不好

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题