美文网首页
Elasticsearch轻量查询

Elasticsearch轻量查询

作者: syhc006 | 来源:发表于2018-03-21 15:08 被阅读0次

    Elasticsearch轻量查询

    Elasticsearch有两种查询方式:

    • URI带有查询条件(轻量查询)
    • 请求体中带有查询条件(复杂查询)

    第一种方式查询能力有限,不是所有的查询都可以使用此方式。而第二种方式将查询条件以JSON格式表现,并作为查询请求的请求体,此方法查询条件更具表现力,建议复杂的查询使用第二种方式。


    轻量查询

    GET twitter/_search?q=user:kimchy
    
    参数名 参数值描述
    q 查询字符串
    df 查询字符串中未指定字段时所使用的默认字段
    analyzer 用于查询字符串的分析器
    analyze_wildcard 是否分析通配符查询或前缀查询,默认为否
    default_operator 默认操作,AND或OR,默认为OR
    lenient 格式转换错误是否被忽略,默认时否
    _source 设置为false时,查询结果不包含_source字段
    stored_fields 查询结果包含的字段,使用逗号分隔
    sort fieldName:asc/fieldName:desc根据指定字段进行排序,可以存在多个sort(顺序很重要)
    track_scores 查询结果中是否包含score数据
    track_total_hits 查询结果中是否包含total数据
    timeout 查询超时时间
    terminate_after 每个分片收集文档的上限值,当文档超过上限时会终止查询。并在查询结果中terminated_early表示是否超过上限
    from hit中第一个文档的起始位置
    size hit中文档的数量
    search_type 查询类型,可以是dfs_query_then_fetch或query_then_fetch。默认为query_then_fetch

    查询字符串详解

    查询字符串被解析为一系列词项和操作符,即q的参数值

    查询字符串格式如下:

    • 根据status字段中的内容进行查询,返回字段中包含active的文档。
    GET twitter/_search?q=status:active
    
    • 根据title字段中的内容进行查询,返回字段中包含quick或brown的文档。默认操作符为OR
    GET twitter/_search?q=title:(quick OR brown)
    GET twitter/_search?q=title:(quick brown)
    
    • 根据author字段中的内容进行查询,返回字段中包含John Smith短语的文档。
    GET twitter/_search?q=author:"John Smith"
    
    • 根据book.title、book.content等字段中的内容进行查询,返回字段中包含quick或brown的文档。
    GET twitter/_search?q=book.\*:(quick brown)
    
    • 根据title字段中的内容进行查询,返回字段不未空的文档。
    GET twitter/_search?q=_exists_:title
    
    • 根据title字段中的内容进行查询,返回字段中包含以a开头或以b开头的文档。通配符*标识匹配0个或多个字符,通配符?标识1个字符。

    通配符会影响查询效率,会消耗过多的内存。以通配符开头的查询,会匹配索引中所有的文档,不建议使用。

    GET twitter/_search?q=title:(a* b?)
    
    • 根据name字段中的内容进行查询,返回字段中匹配//中正则表达式的文档。
    GET twitter/_search?q=name:/joh?n(ath[oa]n)/
    
    • 根据name字段中的内容进行查询,返回字段中模糊匹配quikc的文档。模糊匹配的字符最多有2处与quikc不同,包括多字符、少字符、错位。
    GET twitter/_search?q=name:quikc~
    
    • 根据count字段中的内容进行查询,返回字段中大于等于1并小于5的文档。
    GET twitter/_search?q=count:[1 TO 5}
    GET twitter/_search?q=count:(+>=1 +<5)
    
    • 根据title字段中的内容进行查询,返回字段中包含quick或fox的文档。quick文档相关性更高
    GET twitter/_search?q=title:(quick^2 fox)
    
    • 根据title字段中的内容进行查询,返回字段中一定包含fox并不包含news的文档。quick brown可有可无,如果存在评分会更高。
    GET twitter/_search?q=title:(quick brown +fox -news)
    

    相关文章

      网友评论

          本文标题:Elasticsearch轻量查询

          本文链接:https://www.haomeiwen.com/subject/mzegqftx.html