美文网首页Hadoop
Elasticsearch 篇之Search API 介绍

Elasticsearch 篇之Search API 介绍

作者: 青衣敖王侯 | 来源:发表于2019-06-29 09:38 被阅读86次

    search API
    1.实现对es中存储的数据进行查询分析,endpoint为_search,如下所示:

    curl -uelastic:changeme -XGET http://172.21.30.11:10200/_search
    curl -uelastic:changeme -XGET http://172.21.30.11:10200/my_index/_search
    curl -uelastic:changeme -XGET http://172.21.30.11:10200/my_index1,my_index1/search
    curl -uelastic:changeme -XGET http://172.21.30.11:10200/my
    */_search

    2.查询主要有两种形式:

    2.1URI SEARCH

    term与phrase

    • alfred way等效于alfred OR way
    • "alfred way"词语查询,要求先后顺序
      泛查询:
    • alfred 等效于在所有字段去匹配该term
    • 指定字段
      -name:zzm
    • Group分组设定,使用括号指定匹配的规则
      • (quick OR brown) AND fox
      • status:(active OR pending) title:(full text search)

    2.2 Request Body Search

    • query符合Query DSL 语法的查询语句
    • from,size
    • timeout
    • sort
      符合Query DSL 查询语法的查询语句
      curl -uelastic:changeme -XGET http://172.21.30.11:10200/test_index/_search?pretty -d '
      {
      "query":{
      "term":{"user":"zzm"}
      }
      }'
      它基于JSON定义的查询语言,主要包含如下两种类型:
    • 字段类查询
      如term,match,range等,只针对某一个字段进行查询
      • 全文匹配:针对text类型的字段进行全文检索,会对查询语句先进行分词处理,如match,match_phrase等query类型
      • 单词匹配:不会对查询语句做分词处理,直接去匹配字段的倒排索引,如term,terms,range等query类型
    • 复合查询
      如bool查询等,包含一个或多个字段类查询或者复合查询语句

    相关性算分:指文档与查询语句间的相关度,英文为relevance

    • 通过倒排索引可以获取与查询语句相匹配的文档列表,那么如何将最符合用户查询需求的文档放到前列呢?
    • 本质是一个排序问题,排序的依据是相关性算分
    • TF 词频:单词在该文档中出现的次数。词频越高,相关度越高
    • DF 文档频率:单词出现的文档数
    • IDF 逆向文档频率,与文档频率相反,简单理解为1/DF。单词出现的文档数越少,相关度越高
    • Field-length Norm 文档越短,相关度越高。
      es的算法是按照shard进行的,即shard的分数计算是相互独立的,所以在使用explain的时候注意分片数。


















    相关文章

      网友评论

        本文标题:Elasticsearch 篇之Search API 介绍

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