elasticsearch查询term等级(query查询)

本文详细介绍了Elasticsearch中的Term-level查询,包括exists、fuzzy、ids、prefix、range、regexp、term、terms、terms_set和wildcard查询。讨论了每个查询的用法、参数及性能考虑,例如fuzzy查询的Levenshtein编辑距离,以及如何通过rewrite参数优化查询性能。
摘要由CSDN通过智能技术生成

es下term级别的查询语句

term-level queries 用于query或filter上下文

  • exists query:返回包含索引数据字段的文档,即字段存在
  • fuzzy query:返回 terms 和搜索 term 相近的文档,es使用 Levenshtein edit distance 规则查看搜索相关性(最短距离编辑),如 cat 和 cot,can 等只有一位距离差
  • ids query:返回基于 doc ids 的文档(Returns documents based on their document IDs.)
  • prefix query:返回包含特定前缀文本在提供的字段内的文档(Returns documents that contain a specific prefix in a provided field)
  • range query:返回包含特定 terms 在提供的范围内的文档(Returns documents that contain terms within a provided range.)
  • regexp query:包含的 terms 匹配正则表达式的文档
  • term query:包含的精确 term 在提供的字段
  • terms query:包含1或多个精确 terms 在提供的字段
  • terms_set query:包含最小精确匹配 terms 数量在提供的字段,可用字段或 script 定义最小匹配的 terms
  • type query:返回指定 type 的文档 (7废弃)
  • wildcard query:包含 terms 匹配通配符的文档

exists 存在性查询

exists:辅助参数

  • field:字段必须存在,且包含值,值不能是 null or [],值可以是 1. 空字符串 如"",2. 数组包含 null 和 其他值 如 [null, “foo”],3. mapping 定义的 null-value
存在:
"exists": {
  "field": "user"
}
不存在:
"bool": {
  "must_not": {
    "exists": {
      "field": "user"
    }
  }
}

fuzzy 查询

示例:

    "query": {
        "fuzzy": {
            "user": {
                "value": "ki"  # 匹配 user:kk, kii, k, ik
            }
        }
    }

可编辑距离默认是1,1个字符的概念变为相似的 term,这些改变有:

  • box -> fox : 修改一个字符
  • black -> lack:移除一个字符
  • sic -> sick:插入一个字符
  • act -> cat:换位两个相邻字符

fuzzy顶层辅助参数:

  • field:用于搜索的字段,必填

field 的辅助参数:

  • value:用于在 field 搜索的文本,必填字符串
  • fuzziness:最大可编辑距离,有效值0,1,2 和 AUTO,选填字符串
AUTO:[low],[high] : 在 low - high 的文本中进行动态可编辑距离运算 输入文本字符长度不一样 可编辑距离不一样
AUTO 默认:AUTO:3,6
AUTO:3,6 指的是:value:ab 精确匹配 value:abc fuzziness为1 value:abcdef fuzziness为2
	0-2个字符 必须精确匹配
	3-5个字符 最大1可编辑距离
	6-]个字符 最大2可编辑距离
  • max_expansions:默认 50,创建变化的最大值,会按字母顺序搜索产生变化的 term 当搜索没有结果或数量超过 max_expansions 时结束,配合 prefix_length ,若 prefix_length 为0不建议调大该值,会出现性能问题(注意在部分场景该参数是分片级别,只能在一个分片内限制50),选填整型
  • prefix_length:默认0,左起开始字符的数量,开始字符左不进行改变,右创建表达式,选填整型
  • transpositions:默认 true,是否支持相邻字符交换 ab->ba,选填布尔
  • rewrite:支持查询语句改写,把费时的原始查询类型实例改写成一个性能更高的查询类型实例
有效值:
constant_score (Default):对于更少的 terms 匹配使用 constant_score_boolean 其他使用 a bit set 位图
constant_score_boolean:
	给每个文档分配等于 boost 参数的相关性得分
	该方法将原始query转为一个bool query,该bool query 包含一个should子句和每个匹配关键的 term query
	该方法可能导致最终的 bool query 会超过 indices.query.bool.max_clause_count 设置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值