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

    xiaoxiao2021-03-25  160

    读完这本书我才知道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 } } } }
    转载请注明原文地址: https://ju.6miu.com/read-3026.html

    最新回复(0)