10、Elasticsearch 教程: 准备数据

本文详细讲解如何为Elasticsearch格式化用户数据,包括创建user_admin和user索引、设计字段映射(如昵称、地理位置、标签),并提供JSON数据示例,帮助开发者高效构建搜索功能。

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

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

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

对于DDKK.COM 弟弟快看,程序员编程资料站 的搜索功能,我初步的计划是把用户信息放到 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"
     }
    ]

2、 普通用户;

    [
     {
        "id":1,
        "nickname":"question", 
        "description":"问题少年也是少年",
        "street":"张江高科技园区",
        "city":"Shanghai",
        "state":"Shanghai",
        "zip":"201204",
        "location":[121.60632,31.199305],
        "money":13648,
        "tags":["VUE", "HTML"],
        "vitality":"8.8"
     },
     {
        "id":2,
        "nickname":"枫晚",
        "description":"停车坐爰枫林晚",
        "street":"苏州大学",
        "city":"Suzhou",
        "state":"Jiangsu",
        "zip":"215006",
        "location":[120.65426,31.30797],
        "money":10235,
        "tags":["Java", "Android"],
        "vitality":"3.5"
     }
    ]