zoukankan      html  css  js  c++  java
  • Elasticsearch模糊查询

    前缀查询

    匹配包含具有指定前缀的项(not analyzed)的字段的文档。前缀查询对应 Lucene 的 PrefixQuery 。

    案例
    GET /_search
    { "query": {
        "prefix" : { "user" :  { "value" : "ki", "boost" : 2.0 } }
      }
    }

    正则表达式查询

    regexp (正则表达式)查询允许您使用正则表达式进行项查询。有关支持的正则表达式语言的详细信息,请参阅正则表达式语法。第一个句子中的 “项查询” 意味着 Elasticsearch 会将正则表达式应用于由该字段生成的项,而不是字段的原始文本。

    注意: regexp (正则表达式)查询的性能很大程度上取决于所选的正则表达式。匹配一切像 “.*” ,是非常慢的,使用回顾正则表达式也是如此。如果可能,您应该尝试在正则表达式开始之前使用长前缀。通配符匹配器 “.*?+” 将主要降低性能。

    案例
    GET /_search
    {
        "query": {
            "regexp":{
                "name.first":{
                    "value":"s.*y",
                    "boost":1.2
                }
            }
        }
    }

    通配符查询

    匹配与通配符表达式具有匹配字段的文档(not analyzed)。支持的通配符是 “*”,它匹配任何字符序列(包括空字符);还有 “?”,它匹配任何单个字符。请注意,此查询可能很慢,因为它需要迭代多个项。为了防止极慢的通配符查询,通配符项不应以通配符 “*” 或 “?” 开头。通配符查询对应 Lucene 的 WildcardQuery 

    案例
    GET /_search
    {
        "query": {
            "wildcard" : { "user" : { "value" : "ki*y", "boost" : 2.0 } }
        }
    }

    ###模糊查询数据量越大效率越低,当查询内容较多,数据量较大时建议将该字段设置成text进行分词,然后通过match进行匹配。

  • 相关阅读:
    Beego 学习笔记12:文件的操作
    Beego 学习笔记11:文件的上传下载
    Beego 学习笔记10:Easyui使用
    Beego 学习笔记9:Boostrap使用介绍
    Beego 学习比较8:SQL语句
    Beego 学习笔记7:JS分页
    Beego学习笔记6:分页的实现
    【嵌入式linux】用户登录密码验证配置
    【Linux 环境搭建】ubuntu下nfs安装与配置
    【嵌入式 Linux文件系统】如何使用NFS文件系统
  • 原文地址:https://www.cnblogs.com/libin2015/p/10510705.html
Copyright © 2011-2022 走看看