美文网首页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