ElasticSearch基本查询

词条查询 
这是一个简单查询。它仅 匹配给定字段中包含该词条的稳定,且是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"
                        }
                    }
                }
            }
            }
时间: 2024-11-05 13:30:30

ElasticSearch基本查询的相关文章

基于百度地图SDK和Elasticsearch GEO查询的地理围栏分析系统(1)

本文描述了一个系统,功能是评价和抽象地理围栏(Geo-fencing),以及监控和分析核心地理围栏中业务的表现. 技术栈:Spring-JQuery-百度地图WEB SDK 存储:Hive-Elasticsearch-MySQL-Redis 什么是地理围栏? LBS系统中,地理围栏指的是虚拟边界围成的部分. tips:这只是一个demo,支撑实习生的本科毕设,不代表生产环境,而且数据已经做了脱密处理,为了安全还是隐去了所有数据. 功能描述 1.地理围栏的圈选 (1)热力图 热力图展示的是,北京市

Elasticsearch 连接查询

在一般的关系型数据库中,都支持连接操作. 在ES这种分布式方案中进行连接操作,代价是十分昂贵的. 不过ES也提供了相类似的操作,支持水平任意扩展,实现连接的效果. 其他内容,参考Elasticsearch官方指南整理 ES中的连接 在ES中支持两种连接方式:嵌套查询 和 has_child.has_parent父子查询 嵌套查询: 文档中包含嵌套的字段,这些字段以数组的形式保存对象,这样每个嵌套的子对象都可以被搜索. has_child.has_parent父子查询: 父子文档是存储在同一个索引

分布式搜索引擎Elasticsearch的查询与过滤

一.写入 先来一个简单的官方例子,插入的参数为 -XPUT ,插入一条记录. curl -XPUT'http://localhost:9200/test/users/1' -d'{ "user": "test", "post_date": "2009-11-15T14:12:12", "message": "Elastic Search" }' { "_index":

[Elasticsearch] 过滤查询以及聚合(Filtering Queries and Aggregations)

本章翻译自Elasticsearch官方指南的Filtering Queries and Aggregations一章. 过滤查询以及聚合 A natural extension to aggregation scoping is filtering. Because the aggregation operates in the context of the query scope, any filter applied to the query will also apply to the

elasticsearch 在查询中文时需要分字

作为新人的我,在使用的elasticsearch 时,常遇到一些问题,而今天遇到的问题就是:在使用elasticsearch 搜索中文时,无返回结果? 问题描述如下: 1.在kibana 上查看日志的内容是可以用中文进行搜索的,如下图所示:  然而,在我的代码里用中文进行查询时,却只会返回空,查询时使用的代码如下: /** * 执行搜索 * * @param queryBuilder * @param indexname * @param type * @return */ public voi

Kibana+Logstash+Elasticsearch 日志查询系统

搭建该平台的目的就是为了运维.研发很方便的进行日志的查询.Kibana一个免费的web壳:Logstash集成各种收集日志插件,还是一个比较优秀的正则切割日志工具:Elasticsearch一个开源的搜索引擎框架(支持群集架构方式). 1 安装需求 1.1 理论拓扑 1.2 安装环境 1.2.1 硬件环境 192.168.50.62(HP DL 385 G7 .RAM:12G.CPU:AMD 6128.DISK:SAS 146*4) 192.168.50.98(HP DL 385 G7 .RAM

elasticsearch常用查询

query DSL match 查询 { "match": { "tweet": "About Search" } } 注:match查询只能就指定某个确切字段某个确切的值进行搜索,做精确匹配搜索时, 你最好用过滤语句,因为过滤语句可以缓存数据. match_phrase 查询 { "query": { "match_phrase": { "title": "quick bro

Elasticsearch 数据查询

一.基本查询 语法: GET /索引库名/_search { "query": { "查询类型": { "查询条件": "查询条件值" } } } 查询类型:match_all,match,term,range,fuzzy,bool 等等 查询条件:查询条件会根据类型的不同,写法也有差异 1.1 查询所有(match_all) 查询指令: GET /demo/_search { "query": { &qu

elasticsearch 分页查询实现方案

1. from+size 实现分页 from表示从第几行开始,size表示查询多少条文档.from默认为0,size默认为10, 注意:size的大小不能超过index.max_result_window这个参数的设置,默认为10,000. 如果搜索size大于10000,需要设置index.max_result_window参数 PUT _settings { "index": { "max_result_window": "10000000"

Python Elasticsearch DSL 查询、过滤、聚合操作实例

github.com/yongxinz/te… Elasticsearch 基本概念 Index:Elasticsearch用来存储数据的逻辑区域,它类似于关系型数据库中的database 概念.一个index可以在一个或者多个shard上面,同时一个shard也可能会有多个replicas. Document:Elasticsearch里面存储的实体数据,类似于关系数据中一个table里面的一行数据. document由多个field组成,不同的document里面同名的field一定具有相同