opendistro-ngram-type 是云搜索服务的一个系统内置插件。在模糊搜索的场景中,推荐使用 Ngram 通配符查询,可以在字符串的任意位置查询到匹配项。本文介绍 NGram-Type 插件的简单使用方式。
opendistro-ngram-type 插件默认未安装,如果需要使用,请提前自行安装。如何安装,请参见安装系统内置插件。
PUT my-index { "mappings": { "properties": { "my_doc": { "type": "ngram", "ignore_above":300, "null_value": "value1" } } } }
PUT my-index/_doc/1 { "my_doc" : "This string can be quite lengthy" }
GET my-index/_search { "query": { "wildcard": { "my_doc": { "value": "*quite*lengthy", "case_insensitive":"true", "boost":"1" } } } }
说明
设置模糊搜索内容时,支持 2 种特殊通配符
*
:代表长度大于 0 的任何字符串。?
:代表长度为 1 的任何字符。查询成功时,返回如下类似信息:
{ "took" : 180, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 1, "relation" : "eq" }, "max_score" : 9.0, "hits" : [ { "_index" : "my-index", "_type" : "_doc", "_id" : "1", "_score" : 9.0, "_source" : { "my_doc" : "This string can be quite lengthy" } } ] } }