跳到主要内容

十、Elasticsearch 教程: 准备数据

上一章节我们体验了下结巴分词器,对中文的分词效果真的好好啊,是不是跃跃欲试,想要赶紧怎么把自己的数据添加到 Elasticsearch

别急别急,在添加数据之前我们必须先要对自己的数据进行格式化

本章节我们就来讨论如何格式化数据

对于pottercoding.cn 程序员波特,程序员编程资料站 的搜索功能,我初步的计划是把用户信息放到 Elasticsearch 上,于是我对此做了一些简单的分析

索引

网站的用户分为两大类,版主以上级别的用户和普通注册的用户

根据前面所学,我们知道 Elasticsearch 也有数据库、表结构和行数据的概念,分别是索引、映射和文档

所以我们首先需要创建两个索引 user_adminuser,分别用于索引版主和普通用户

而且它们有功能的类型 type,都是 user

字段

因为具有相同的类型,所以我们的版主和普通用户的信息几乎是一模一样的,都包括以下字段

字段类型说明
idintID
nicknamestring昵称
descriptionstring用户简介
streetstring当前居住街道
citystring当前所在城市
statestring当前所在省
zipint邮政编码
locationarray地理位置,两个元素数组,第一个表示经度,第二个表示纬度
moneyint当前站币
tagsarray标签
vitalityfloat活跃度,满分为 10 分

数据

我们需要把数据库中用户相关的所有数据读出来,然后筛选出上面的字段,拼接成多个 JSON 对象

1、 版主(user_admin);

    [
{
"id":1,
"nickname":"站长",
"description":"创业是的天赋是天生的,而我偏偏是后生的", "street":"东四十条",
"city":"Beijing",
"state":"Beijing",
"zip":"100007",
"location":[116.432727,39.937732],
"money":5201314,
"tags":["PHP", "Python"],
"vitality":"9.0"
},
{
"id":2,
"nickname":"雅少",
"description":"虚怀若谷",
"street":"四川大学",
"city":"Chengdu",
"state":"Sichuan",
"zip":"610044",
"location":[104.094537,30.640174],
"money":68023,
"tags":["Python", "HTML"],
"vitality":"7.8"
},
{
"id":3,
"nickname":"歌者",
"description":"程序设计也是设计,研发新菜也是研发",
"street":"五道口",
"city":"Beijing",
"state":"Beijing",
"zip":"100083",
"location":[116.346346,39.999333],
"money":71128,
"tags":["Java", "Scala"],
"vitality":"6.9"
}
]