天天看点

elasticsearch模糊匹配查询

  • ​​处理人类语言​​
  • ​​开始处理各种语言​​
  • ​​词汇识别​​
  • ​​归一化词元​​
  • ​​将单词还原为词根​​
  • ​​停用词: 性能与精度​​
  • ​​同义词​​
  • ​​拼写错误​​
  • ​​模糊性​​
  • ​​模糊查询​​
  • ​​模糊匹配查询​​
  • ​​模糊性评分​​
  • ​​语音匹配​​

模糊匹配查询

​match​

​ 查询支持开箱即用的模糊匹配:

GET /my_index/my_type/_search

{

"query": {

"match": {

"text": {

"query": "SURPRIZE ME!",

"fuzziness": "AUTO",

"operator": "and"

}

}

}

}

查询字符串首先进行分析,会产生词项 ​

​[surprize, me]​

​​ ,并且每个词项根据指定的 ​

​fuzziness​

​ 进行模糊化。

同样, ​

​multi_match​

​​ 查询也支持 ​

​fuzziness​

​​ ,但只有当执行查询时类型是 ​

​best_fields​

​​ 或者 ​

​most_fields​

​ :

GET /my_index/my_type/_search

{

"query": {

"multi_match": {

"fields": [ "text", "title" ],

"query": "SURPRIZE ME!",

"fuzziness": "AUTO"

}

}

}

elasticsearch模糊匹配查询

通配符查询

返回包含匹配通配符模式的术语的文档。

通配符运算符是匹配一个或多个字符的占位符。例如,​

​*​

​通配符运算符匹配零个或多个字符。您可以将通配符运算符与其他字符组合以创建通配符模式。

示例请求

以下搜索返回​

​user.id​

​​字段包含以 开头​

​ki​

​​和结尾的术语的文档​

​y​

​​。这些匹配条件可以包括​

​kiy​

​​, ​

​kity​

​​或​

​kimchy​

​。

GET /_search
{
  "query": {
    "wildcard": {
      "user.id": {
        "value": "ki*y",
        "boost": 1.0,
        "rewrite": "constant_score"
      }
    }
  }
}      

的顶级参数 ​

​wildcard​

​<field>​

(必需,对象)要搜索的字段。

参数 ​

​<field>​

​value​

(必需,字符串)您希望在提供的 ​

​<field>​

​.

此参数支持两个通配符运算符:

  • ​?​

    ​, 匹配任何单个字符
  • ​*​

    ​, 可以匹配零个或多个字符,包括空字符

避免以​

​*​

​​或开始模式​

​?​

​。这会增加查找匹配项所需的迭代次数并降低搜索性能。

​boost​

(可选,浮点数)用于减少或增加查询​​相关性分数​​​的浮点数 。默认为​

​1.0​

​.

您可以使用该​

​boost​

​参数来调整包含两个或更多查询的搜索的相关性分数。

Boost 值相对于 的默认值​

​1.0​

​​。​

​0​

​​和之间的提升值会 ​

​1.0​

​​降低相关性分数。大于 的值会​

​1.0​

​ 增加相关性分数。

​rewrite​

(可选,字符串)用于重写查询的方法。有关有效值和更多信息,请参阅 ​​rewrite参数​​。

​case_insensitive​

​ [7.10.0]在 7.10.0 中添加。

(可选,布尔值)设置为 true 时,允许模式与索引字段值不区分大小写匹配。默认为 false,这意味着匹配的区分大小写取决于基础字段的映射。

笔记

允许昂贵的查询

继续阅读