ElasticSearch基本查询

Stella981
• 阅读 666

词条查询 
这是一个简单查询。它仅 匹配给定字段中包含该词条的稳定,且是2未经分析的确切的词条。 

“query” :{ 
“term”:{ 
“title”:”crime” 



多词条查询 
匹配内容中包含某些词条的文档。 

“query” :{ 
“terms::{ 
“tags”:[“novel”,”book”], 
“minimum_match”:”2”//至少n个匹配 



mathc_all 
匹配索引中的所有文件

常用词查询
    这是在没有使用停用词的情况下,为了提高准确性和相关性而提供的一个解决方案
    该查询会将词组分成高频和低频两组,使用低频查询并计算分数。然后用高频词组查询但不计算分数。
match查询
    该查询讲query参数中的值拿出来加以分析,然后构建相应的查询

    布尔值查匹配查询
        {
            "query":{
                "match":{
                    "title":{
                        "query" :"crime and punishment",
                        "operator":"and"   -- 连接创建布尔条件的运算符默认or
                        "analyzer" :"",    -- 分析器的名字
                        "fuzziness":"",    -- 构建模糊查询
                        "prefix_length",   -- 控制模糊查询的行为
                        "max_expansions",  -- 同上
                        "zero_terms_query" -- 指定当所有的词条都被分析器移除时,查询的行为。可以为all或者none。默认后者
                                    不反悔或者返回所有文档
                        "cutoff_frequency" -- 将查询分解成两组,一组高频一组低频
                    }
                }
            }
        }
    mathc_phrase查询
        从分析后的文本中构建短语查询
            {
            "query":{
                "mathc_phrase" :{
                    "title" :{
                        "query":"crime and punishment",
                        "slop":"1"                    -- 一个整数值,构建短语时,中间允许的未知词条数。默认为0
                        "analyzer":""                 -- 分析时用到的分析器
                    }
                }
            }
        }


    match_phrase_prefix查询
        和上类似,增加了两个参数
        {
            "query":{
                "mathc_phrase" :{
                    "title" :{
                        "query":"crime and punish",   -- 允许最后一个字条只做前缀匹配
                        "slop":"1"                    -- 一个整数值,构建短语时,中间允许的未知词条数。默认为0
                        "analyzer":""                 -- 分析时用到的分析器
                        "max_expansitions" :"20"      -- 控制多少前缀将被重写成最后的词条。?????
                    }
                }
            }
        }

multi_match
    针对多个字段尽心查询
    {
        "query" :{
            "multi_match":{
                "query":"crime and punishment",
                "fileds":["title","otitle"],
                "use_dis_max":""                  --定义一个布尔值,true时使用析取最大分数查询-默认。false使用不二查询
                "tie_breaker":""                  -- 在use_dis_max时使用,指定低分数和最高分数之间的平衡          
            }
        }
    }


query_String
    本查询支持全部的lucene语法
    A{
        "query":{
            "query_string":{
                "query":" title:crime^10 + title:punishment -otitle:cat +author:(+Fyodor +dostoevsky)",
                "default_field":"title"                    --指定默认的查询字段。默认为all,由index.query.default_field指定
                "allow_lending_wildcard"                   --指定是否允许通配符作为词条的第一个字符,默认true
                "default_operator"  :""                    --逻辑运算符or and 默认or
                "lowercase_extend_terms":""                --查询重写是否把词条变成小写,默认为true,意味重写后的词条讲小写
                "enable_position_increments":""            --指定查询结果中的位置增量是否打开,默认true
                "fuzzy_max_expansions":"    "              --使用模糊查询时,此参数指定模糊查询可被扩展到的最大词条数,默认50
                "fuzzy_prefix_length" :                    --指定生成的模糊查询中的前缀的长度。默认0
                "fuzzy_min_sim" :                          --此参数指定模糊查询的最小相似度,默认0.5
                "phrase_slop" :""              --指定参数溢出值,默认0.
                "analyze_wildcard":""                      --指定是否应该分析通配符查询生成的词条,默认false
                "auto_generate_phrase_queries":""          --指定是否自动生成短语查询,默认为false。
                "minimum_should_match" :                   --控制有多少生成Boolean should子句必须与文档词条匹配,才能认为是匹配。
                                        可以使百分比,也可以是整数值-个
                "lenient":" "              --格式方面的失败是否忽略。
            }
        }
    }
    针对多字段的query_string
            {
                "query_string":{
                    "query":""
                    "fields"[title,otitle]
                }
            }
simple_query_string:
    查询使用lucene最新查询解析器之一:SImpleQueryParser
标识符查询
    仅使用提供的标识符来过滤返回的文档。其针对内部的_uid字段运行,所以不需要启用_id字段
    {
        ”query“:{
            "ids":{
                "type":"book"
                "values":["10","11"]
            }
        }
    }
前缀查询
    t他们指定字段以给定的前缀开始的文档
    {
    ”query":{
        "prefix":{
            "title":"cri"
        }
    }
    }
fuzzy_like_this查询
    类似more_like_this查询。
    它查找所有与提供的文本类似的文档,与more不同的是,它利用模糊字符串并选择生成的最佳差分词条
    {
        "qury":{
            "fuzzy_like_this":{
                "fields":[],
                "like_text":""
                "ignore_tf:false        --指定在相似度计算期间,是否忽略词频。
                "max_query_terms"       --指定生成的查询中能包括的最大查询词条书,默认25
                "min_similarity"        --指定差分词条应该有的最小相似性。默认0.5
                "prefix_length"         --指定查分词条的公共前缀长度,默认为0
                ”boost"
                "analyzer
            }
        }
    }
fuzzy_like_this_field查询
    和上类似,但是只针对单个字段
fuzzy查询
    是第三种模糊查询类型,它基于编辑距离算法类匹配文档。很占用CPU
通配符查询
    在查询中使用*和?等通配符。
more_like_this查询
    {
        “query":{
            "more_like_this":{
                "fields" "[],
                "like_text":""
                "min_term_freq" :              --最低词频,低于将忽略
                "percent_terms_to_match"       --百分比,高于才会被认为是类似的
                "max_query_terms"              --指定生成的查询中能包括的最大查询词条数,默认25
                "stop_words"                   --
                "min_doc_freq"                 --包含我能当的最小数目,低于次数目,该词条将被忽略,默认5
                "max_doc_freq"
                "min_word_len"                 --单词的最小长度,低于将被忽略
                ”boost_terms"
                "boost"
                "analyzer"

                }
        }
    }
more_like_this_field查询
    针对单个字段
范围查询
    gte:>=
    gt: >
    lte:<=
    lt:<
最大分值查询
    他会生成一个由所有子查询返回的文档组成的并集并将他返回。,这样我们可以控制较低得分的子查询对文档最后得分的影响
    最后得分的计算:
        最高分数的子查询的得分之和,奖赏其余子查询的得分之和乘以tie参数的值
正则表达式查询
    支持正则
复合查询

    布尔查询
        should
        must
        must_not
        minimum_should_match:
    加权查询
        封装了两个查询,并且降低其中一个查询返回文档的得分。其由三个节点必须定义
            positive: 包含所返回文档得分不会被改变的查询
            negative: 得分将被降低
            negtive_boost 降低negative部分查询得分的加权值
    constant_score查询
        其封装了另一个查询或过滤,并为每一个所封装查询返回的文档返回一个常量得分
    索引查询
        {
            "query":{
                "indices::{
                    "indices":['library'],--library索引上查询
                    "query" :{
                        "term":{
                            "title":"crime"
                            }
                    },
                    "no_match_query":{--其他索引上查询
                        "term":{
                            "user":"crime"
                        }
                    }
                }
            }
            }
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
Elasticsearch模糊查询
前缀查询匹配包含具有指定前缀的项(notanalyzed)的字段的文档。前缀查询对应 Lucene 的 PrefixQuery 。案例GET/_search{"query":{"prefix":{"user":{"value":"ki","bo
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
Es学习第七课, term、terms、match等基本查询语法
term、terms查询termquery会去倒排索引中寻找确切的term,它并不知道分词器的存在,这种查询适合keyword、numeric、date等明确值的term:查询某个字段里含有某个关键词的文档GET/customer/doc/_search/{"query":{
Wesley13 Wesley13
3年前
ThinkPHP 根据关联数据查询 hasWhere 的使用实例
很多时候,模型关联后需要根据关联的模型做查询。场景:广告表(ad),广告类型表(ad\_type),现在需要筛选出广告类型表中id字段为1且广告表中status为1的列表先看关联的设置部分 publicfunctionadType(){return$thisbelongsTo('A
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这