ElasticSearch数据导入和搜索的流程简析

数据导入流程

1,原始数据

以Mysql为例,就是一个数据表,表结构如下:

CREATE TABLE `twitter_tweet` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `tweet_id` varchar(200) DEFAULT NULL,
  `user_id` varchar(200) CHARACTER SET utf8 DEFAULT NULL,
  `user_screen_name` varchar(200) CHARACTER SET utf8 DEFAULT NULL,
  `tweet` longtext CHARACTER SET utf8,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

2,创建映射

  • ES支持多种数据类型,例如text, keyword, date, long, double, boolean, ip,在创建mapping的时候需要指定每一个field的类型以及对应的分析器。
  • 其中,有一些数据类型不支持分析器,例如keyword, date, long, double等,text(V5版本以上,V2等低版本是string)支持分析器。
"mappings": {
    "user": {
        "properties": {
            "friends_count": {
                "type": "integer"
            },
            "user_created_at": {
                "format": "yyyy-MM-dd HH:mm:ss||strict_date_optional_time||epoch_millis",
                "type": "date"
            },
            "user_name": {
                "analyzer": "st_chinese",
                "type": "text"
            },
            "user_screen_name": {
                "analyzer": "st_chinese",
                "type": "text"
            },
            "favourites_count": {
                "type": "integer"
            },
            "description": {
                "analyzer": "st_chinese",
                "type": "text"
            },
            "type": {
                "type": "keyword"
            },
            "is_protected": {
                "type": "short"
            }
        }
    }
}

3,分析器

  • 在创建mapping的同时,需要声明分析器,例如中文简繁体、英语时态切词等。
  • 如下图,有两个样例,不同分析器对原始的切词效果不一样,也直接影响存储的大小,影响查询的效率。

分析器1.png

分析器2.png

4,倒排索引

  • 一个倒排索引由文档中,所有不重复词的词条构成,对于其中每个词,有一个包含它的文档列表,如下图所示。
  • 根据分析器得到的结果,生成倒排索引,倒排索引的存储格式如下图所示。

倒排索引.png

数据搜索流程

1,分析器

  • 通过搜索词语所在字段指定的分析器,对搜索词语进行切词。

2,倒排索引

  • 通过倒排索引,匹配相关性,按照相关性返回对应的document列表,完成搜索。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值