Elastiscsearch搜索

搜索--基础工具
    搜索形式:
        1、结构化查询
        2、全词查询
        3、二者结合
    三个概念:
        Mapping:  在field中数据如何解释
        Analysis: 全词在查询中是如何被处理的
        Query DSL: 弹性、强大的查询语言
        
    空查询
        常见基本形式    GET /_search
            {
            "hits" : {
                "total" :       14,
                "hits" : [
                {
                    "_index":   "us",
                    "_type":    "tweet",
                    "_id":      "7",
                    "_score":   1,
                    "_source": {
                    "date":    "2014-09-17",
                    "name":    "John Smith",
                    "tweet":   "The Query DSL is really powerful and flexible",
                    "user_id": 2
                    }
                },
                ... 9 RESULTS REMOVED ...
                ],
                "max_score" :   1
            },
            "took" :           4,
            "_shards" : {
                "failed" :      0,
                "successful" :  10,
                "total" :       10
            },
            "timed_out" :      false
        }
        应答解析:
            hits区域:包含匹配的总数,hits数组包含前10个匹配的文档
            _score字段:相关度分数
            took: 显示操作执行整体时间
            _shards: 查询中涉及的分片总数
            time_out:提示查询是否超时;
        GET /_search?timeout=10ms
        
    多索引,多类型查询:
        /_search         ## 查询所有类型的指标
        /gb/_search     ## 查询某种所有的所有类型
        /gb,us/_search     ## 查询gb和us索引的所有类型
        /g*,u*/_search  ## 查询以g和u开头的所有索引的类型
        /gb/user/_search ## 查询index为gb,type为user的
        /gb,us/user,tweet/_search ## 查询在gb和us索引中的user和tweet类型
        /_all/user,tweet/_search  ## 查询类型为user和tweet
            
    分页查询:
        参数:
            size和from
            GET /_search?size=10
            GET /_search?size=5&from=5
            GET /_
    查询精简版:
            GET /_all/tweet/_search?q=tweet:elasticsearch
            查询tweet字段中包含elasticsearch内容的document
            
            查询 +name:john +tweet:mary的文档
            GET /_search?q=%2Bname%3Ajohn+%2Btweet%3Amary
        
            查询所欲包含mary的文档
            GET /_search?q=mary
            
        更复杂的查询
            +name:(mary john) +date:>2014-09-10 +(aggregations geo)
            
映射和分析:
    GET /_search?q=2014              # 12 results
    GET /_search?q=2014-09-15        # 12 results !
    GET /_search?q=date:2014-09-15   # 1  result
    GET /_search?q=date:2014         # 0  results !
    数据中只有一个document的date字段值为2014-09-15, 但是几次查询结构确不一样。
    elasticsearch按照_all字段对数据进行索引和按照date进行索引是不同的,elasticsearch如何
    解释document结构?
    
    GET /gb/_mapping/tweet 
        {
        "gb": {
        "mappings": {
         "tweet": {
            "properties": {
               "date": {
                  "type": "date",
                  "format": "strict_date_optional_time||epoch_millis"
               },
               "name": {
                  "type": "string"
               },
               "tweet": {
                  "type": "string"
               },
               "user_id": {
                  "type": "long"
               }
            }
         }
    Elasticsearch动态生成映射,基于猜测的字段类型。_all字段的类型是string,date类型和string类型索引
    化结果不同。表示document字段类型和全词类型的不同导致查询结果不同
    
    准确值VS全词
        Elasticsearch中的数据宽泛的可用分为两类:准确值和全词
        Foo不是foo的准确值,2014不是2014-09-15的准确值;
        全词:文本数据,使用人类语言书写,例如邮件的正文。
            
    准确值查询简单:判断是二段式,匹配还是不匹配
    全词查询有些区别:文档如何匹配查询,针对给定的查询,相关度的值如何确定
        全词查询很少做到全匹配,实际上想查询包含查询字段的文档;elasticsearch先分析词,然后使用结果
        构建反向Index。
    反向Index:
        inverted index结构:允许快速全词查询,由所有document中的唯一单词列表组成;
        案例:
            两个document中都包含content字段:内容分别是:
            1.The quick brown fox jumped over the lazy dog
            2.Quick brown foxes leap over lazy dogs in summer
        生成inverted index的步骤如下:
            切割content的value为独立的单词,创建排序列表,列出每个document的出现
            Term      Doc_1  Doc_2
            -------------------------
            Quick   |       |  X
            The     |   X   |
            brown   |   X   |  X
            dog     |   X   |
            dogs    |       |  X
            fox     |   X   |
            foxes   |       |  X
            in      |       |  X
            jumped  |   X   |
            lazy    |   X   |  X
            leap    |       |  X
            over    |   X   |  X
            quick   |   X   |
            summer  |       |  X
            the     |   X   |
            -------------------------
        当查询quick brown时,只需要知道在document中单词出现了 
        analysis:标记化和规则化的过程
        analyzers:分析器,完成analysis,analyzers通常包装器,由三种功能组合:
            字符过滤器,标记器,符号过滤器,
        内置的analyzers: 
            Standard analyzer:
            Simple analyzer:
            Whitespace analyzer:
            Language analyzers
            
        查看当前Elasticsearch使用的analyzers
            GET /_analyze
            
        核心简单字段类型:
            string | byte | short | integer | long | float | double | boolean | date 
        JSON类型                    字段类型
        Boolean                     boolean 
        完全数字                    long 
        浮点                        double 
        字符串,有效日期            date 
        字符串                      string 
    
    
        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值