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列表,完成搜索。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,321评论 6 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,288评论 19 139
  • 创建索引的语法 示例: 添加索引(索引一旦建立,不能修改) 删除索引 分词器的修改与定制 修改分词器设置 默认分词...
    缓慢移动的蜗牛阅读 2,496评论 0 0
  • 文/池香衣 1 看到一朵花,像做了一个梦。转身去做别的事,忽然想起那朵花,好似梦里留香。今天我圆了一个梦。 等公交...
    池香衣阅读 592评论 5 5
  • 看似荒芜的生命尽头 是你绝妙的起头 人醒来怎么看待梦影 你也必怎样轻看他们的影像 因此我心里发酸,肺腑刺痛 人子在...
    清芷阅读 1,267评论 4 9