elasticsearch服务器开发学习笔记(三.二)

读完这本书我才知道es提供了如此丰富的查询功能

词条查询

{
    "query" : {
        "term" : {
       "title" : "crime"
        } }
}

查询加权

{
    "query" : {
        "term" : {
       "book_title" : {
         "value" : "a",
          "boost" : 10.0
       }

        } }
}

多词条查询

{
    "query" : {
        "terms" : {
       "book_title" : ["a","美女"]

        } }
}

match_all

{
    "query" : {
  "match_all": {}
    }
}

常用词查

{
"query" : {
     "common" : {
       "title" : {
         "query" : "crime and punishment",
         "cutoff_frequency" : 0.001
       }
} }
}

query:这个参数定义了实际的查询内容。

cutoff_frequency: 这个参数定义一个百分比(0.001表示0.1%)或一个绝对值属性值>=1时)。这个值用来构建高、低频词组。此参数设置为0.001意味着频率<=0.1%的词将出现在低频词组中。

low_freq_operator:这个参数可以设为or或and,默认是or。它用来指定为低频词组构建查询时用到的布尔运算符。如果希望所有的词都在文档中出现才认为是匹配,应该把它设置为and。

high_freq_operator:这个参数可以设为or或and,默认是o。它用来指定为高频词组构建查询时用到的布尔运算符。如果希望所有的词都在文档中出现才认为是匹配,那么应该把它设置为and。

minimum_should_match:不使用low_freq_operator和high_freq_operator参数的话,可以使minimum_should_match参数。和其他查询一样,它允许指定匹配的文档中应该出现的查询词的最小个数。
boost:这个参数定义了赋给文档得分的加权值。
analyzer:这个参数定义了分析查询文本时用到的分析器名称。默认值为default analyzer。
disable_coord:此参数的值默认为false,它允许启用或禁用分数因子的计算,该计算基于文档中包含的所有查询词的分数。把它设置为true,得分不那么精确,但查询将 4 稍快。

match

将使用建立索引时的分析词

1. 布尔值匹配查询
布尔匹配查询分析提供的文本,然后做出布尔查询。有几个参数允许控制布尔查询匹配行为, 如下所示。

operator:此参数可以接受or和and,控制用来连接创建的布尔条件的布尔运算符。默 认值是or。如果希望查询中的所有条件都匹配,可以使用and运算符。

analyzer:这个参数定义了分析查询文本时用到的分析器的名字。默认值为default analyzer。

fuzziness:可以通过提供此参数的值来构建模糊查询(fuzzy query)。它为字符串类型 提供从0.0到1.0的值。构造模糊查询时,该参数将用来设置相似性。

prefix_length:此参数可以控制模糊查询的行为。有关此参数值的更多信息,请参阅 3.3.11节。

max_expansions:此参数可以控制模糊查询的行为。有关此参数值的更多信息,请参 阅3.3.11节。

zero_terms_query:该参数允许指定当所有的词条都被分析器移除时(例如,因为停 止词),查询的行为。它可以被设置为none或all,默认值是none。在分析器移除所有查 询词条时,该参数设置为none,将没有文档返回;设置为all,则将返回所有文档。

cutoff_frequency:该参数允许将查询分解成两组:一组低频词和一组高频词。参阅 3.3.4节,看看这个参数怎么用。
这些参数应该封装在运行查询的字段名称里。所以如果想对title字段运行一个简单的布尔 匹配查询,发送如下查询:
{
"query" : {
        "match" : {
          "title" : {
          "query" : "crime and punishment",
          "operator" : "and"
          }
} }
}
2. match_phrase查询 match_phrase查询类似于布尔查询,不同的是,它从分析后的文本中构建短语查询,而不是布尔子句。该查询可以使用下面几种参数。

slop:这是一个整数值,该值定义了文本查询中的词条和词条之间可以有多少个未知词 条,以被视为跟一个短语匹配。此参数的默认值是0,这意味着,不允许有额外的词条1。

analyzer:这个参数定义了分析查询文本时用到的分析器的名字。默认值为default
POST weibobook/wapbook/_search
{
"query" : {
    "match_phrase" : {
      "book_title" : {
        "query" : "魅力中国",
        "slop" : 1 

      }
    } 
}
}
3 多个match

match_query查询的最后一种类型是match_phrase_prefix查询。此查询跟match_ phrase查询几乎一样,但除此之外,它允许查询文本的最后一个词条只做前缀匹配。此外,除 了match_phrase查询公开的参数,还公开了一个额外参数max_expansions。这个参数控制有 多少前缀将被重写成最后的词条。
{
"query" : {
    "multi_match" : {
      "book_title" : {
        "query" : "魅力中国",
        "fields" : ["author"] 

      }
} }
}
use_dis_max:该参数定义一个布尔值,设置为true时,使用析取最大分查询,设置为 false时,使用布尔查询。默认值为true。
tie_breaker:只有在use_dis_max参数设为true时才会使用这个参数。它指定低分数 项和最高分数项之间的平衡。

query_string查询

支持全部的lucen语法

simple_query_string

支持全部的lucen语法 不抛出异常

标识查询

通过标识符过滤文本
{
"query" : {
        "ids" : {
          "values" : [ "10", "11", "12", "13","5372595" ]
    } }
}

前缀查询

prefix
POST weibobook/wapbook/_search
{
"query" : {
  "prefix" : {
  "book_title" : {
          "value" : "魅力",
            "boost" : 3.0
          }
  }
}
}

fuzzy_like_this

fuzzy_like_this查询类似于more_like_this查询。它查找所有与提供的文本类似的文 档,但是它有点不同于more_like_this查询。它利用模糊字符串并选择生成的最佳差分词条。

fuzzy_like_this_field

fuzzy_like_this_field查询和fuzzy_like_this查询类似,但它只能对应单个字段。 正因为如此,它不支持多字段属性。

fuzzy

fuzzy查询是模糊查询中的第三种类型,它基于编辑距离算法来匹配文档。编辑距离的计算 基于我们提供的查询词条和被搜索文档。此查询很占用CPU资源,但当需要模糊匹配时它很有用, 例如,当用户拼写错误时
POST weibobook/wapbook/_search
{
"query" : {
"fuzzy" : {
          "book_title" : "魅力"
} }
}

通配符查询

通配符查询允许我们在查询值中使用*和?等通配符。
{
"query" : {
        "wildcard" : {
          "title" : "cr?me"
} }
}

more_like_this

more_like_this查询让我们能够得到与提供的文本类似的文档。

more_like_this_field

more_like_this_field查询与more_like_this查询类似,但它只能针对单个字段。正 6 因为如此,它不支持多字段属性。我们把查询参数封装到要查询的字段名字中,而不是指定 fields参数。

范围查询

gte:范围查询将匹配字段值大于或等于此参数值的文档。     gt:范围查询将匹配字段值大于此参数值的文档。
lte:范围查询将匹配字段值小于或等于此参数值的文档。 
 lt:范围查询将匹配字段值小于此参数值的文档。
POST weibobook/wapbook/_search
{
      "query" : {
        "range" : {
          "book_id" : {
            "gte" : 5353025,
            "lte" : 5353028
} }
} }

最大分查询

最大分查询非常有用,因为它会生成一个由所有子查询返回的文档组成的并集并将它返回。这个查询好的一面是,我们可以控制较低得分的子查询对文档最后得分的影响。

文档的最后得分是这样计算的:最高分数的子查询的得分之和,加上其余子查询的得分之和 乘以tie参数的值。所以,可以通过tie_breaker参数来控制较低得分的查询对最后得分的影响。

把tie_breaker设为1.0,得到确切的总和;把tie_breaker设为0.1,结果,除最高得分的查 询外,只有所有查询总得分的10%被加到最后得分里。
{
    "query": {
        "dismax": {
            "tie_breaker": 0.99, 
            "boost": 10, 
            "queries": [
                {
                    "match": {
                        "book_title": "魅力" }
                }, 
                {
                    "match": {
                        "author": "魅力" }
                }
            ]
        }
    }
}

正则查询

通过正则表达式查询,可以使用正则表达式来查询文本。请记住,此类查询的性能取决于所 选的正则表达式。如果我们的正则表达式匹配许多词条,查询将很慢。一般规则是,正则表达式 4 匹配的词条数越高,查询越慢。
POST weibobook/wapbook/_search
{
"query" : {
    "regexp" : {
      "book_title" : {
        "value" : "可爱[ae]",
        "boost" : 10.0
      }
}

}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值