高级查询初始化:emp.es.init(同步) / emp.es.init.asy(异步),建议使用异步接口

(配置完成时数据进行初始化操作,如果报错先调这两个api的任意一个,点执行这个操作,注意只执行一次,不要重复执行)

声明:高级查询每个人的数据只有一条,即我们做子集关联时,关联的数据也指具有唯一一条的特性。

(比如关联多条学历时,我们就要以‘is_highest'='是'这条作为唯一一条的条件)

高级查询配置步骤总览

高级查询的公司级模板格式为固定的es_search_schema_empbasicinfo_XXX.json,共分为三类,总模板(all)、关联子集模板(可以创建多个)、展示模板(display)配置顺序也按照

1)配置总模板es_search_schema_empbasicinfo_all.json,若字段在Employee主集上,则直接添加字段并跳到第三步配置展示模板,若字段在人员信息关联子集上,则配置子集的关联

2)配置关联子集模板es_search_schema_empbasicinfo_XXX.json(子集字段才需要,主集字段跳过该步骤直接到第三步)

3)配置展示模板es_search_schema_empbasicinfo_display.json

4)清除redis缓存+全量初始化数据

高级查询配置的详细过程

1.配置高级查询显示的总模版: 

es_search_schema_empbasicinfo_all.json,这里拿公有模版(非公司级模版)一段代码来进行概念说明:

{
   "photo": {
        "search": false,
        "name": "photo",
        "es": {
            "type": "keyword"
        }
    },
    "empeducation": {
        "control": {
            "single_one": {
                "option": [],
                "must": [{
                    "value": "是",
                    "key": "is_highest",
                    "op": "="
                }]
            }
        },
        "model": "EmployeeEducation",
        "name": "教育经历",
        "es": {
            "include_in_parent": true,
            "type": "nested"
        },
        "obj_type": "list"
    }}

上面例子中的两个部分,主要就是做主集基础字段(photo子集的关联(empeducation)的预制,比如我们要配置个性化子集的一个字段到高级查询中,就必然要把个性化子集的映射关系关联到此json文件中

参数说明:

参数说明参数说明
search是否将该字段展示在高级查询搜索框中,true为展示model对应model名,key为model的小名对应进行替换
name字段在搜索框中展示的名称,也作为搜索依据,最好与display模板中保持一致obj_type关联子集的属性,通常为"list"
es

es数据库中的相关参数,其中
type为es数据库中的字段的类型,通常字符串为text/keyword,数值型为integer,文本型为text,日期型为date,关联子集为nested

copy_to 表示当前字段的值可以通过全文模糊搜索,例如人员信息中关联了夫妻的姓名,若如果不希望模糊搜索姓名时,夫妻姓名符合的数据也被添加进模糊搜索结果内,可以去掉此配置

es中的fields为帮助es快速定位搜索内容的配置,所以非搜索字段例如photo、orderno等一般在es中不配置field,如果字段需要用作搜索字段,则固定配置 "fields": {"raw": {"type": "keyword"}}

control

一般用于子集有多条数据时,指定唯一展示在列表中的数据,
配合single_one中的参数进行指定过滤高级查询展示的唯一数据
(这里指定的数据仅影响列表展示的数据,多条数据依然可以被高级查询检索到,如果希望只检索指定数据,需要用filter_dict进行过滤)

dynamic_category

兼容gs,设置为true即可

filter_dict

用于子集有多条数据时,过滤数据,高级查询可查询到的数据

include_in_parent

关联子集时配置为true即可




下边我们跟着一个例子来配置

例:我们想将我们人员信息管理中人才信息这个子集模型下的人才类别字段做高级查询,这个子集和字段本身的信息如下:

那我们就需要先在es_search_schema_empbasicinfo_all.json文件中加入关联子集:

"employee_dynamic_subset_talent_information": {
    "control": {
        "single_one": {
            "option": [],
            "must": []
        }
    },
    "obj_type": "list",
    "name": "人才信息",
    "dynamic_category": true,
    "model": "employee_dynamic_subset.talent_information",
    "es": {
        "type": "nested",
        "include_in_parent": true
    }
}

参数说明

其中model对应的model名,key为model的小名对应进行替换。


2.当我们做好子集关联时,还需要配置子集中展示的字段

配置(新增)个性化模版:es_search_schema_empbasicinfo_employee_dynamic_subset_talent_information.json

这里模板命名的规则为:’es_search_schema_empbasicinfo‘(固定格式)+下划线+model的小名(上一步总模板中配置的关联子集).json

我们需要在此模版中配置字段:

"talent_category_name": {
    "field": "talent_category.name",
    "search": true,
    "name": "人才类别",
    "es": {
        "fields": {
            "raw": {
                "type": "keyword"
            }
        },
        "type": "text",
        "copy_to": "full_text"
    }
}


其中:talent_category为字段的key值,意思是我拿这个字段对象的name作高级查询,talent_category_name为查询这个字段的小名。
copy_to 表示当前字段的值可以通过全文模糊搜索, 如果不希望添加进模糊搜索内可以去掉此配置, search表示当前字段是否会在下拉搜索选项中出现


3.配置显示模版es_search_schema_empbasicinfo_display.json

es_search_schema_empbasicinfo_display.json模版控制我们的查询字段是否在高级查询的列表展示
在该模板中添加某个子集字段展示时,参考如下配置:

"employee_dynamic_subset_talent_information.talent_category_name": {
    "width": "100px",
    "display": true,
    "value": "人才类别",
    "index": 50
}

这段代码意思是:我取关联的小名employee_dynamic_subset_talent_information model下的小名talent_category_name这个字段作为展示
其中属性说明:


参数说明
1display
是否展示
2index展示list的排序
3width字段展示宽度



4.验证配置是否添加成功

执行完以上操作后,基本配置已经完成,但仍须参考下边步骤做一些验证,确保字段信息出现在高级查询中,一个字段即配置完成

1. 首先在es返回的结果中选中一个人, 获取其人员id



2. 单个人员初始化

接口: emp.es.init.by.employee_ids

3.清除Redis缓存

清楚地址:http://127.0.0.1:3000/server/redis
清除缓存:
es_search_schema_empbasicinfo#35 # 35换成对应环境的公司id
缓存删除接口: es.redis.cache.remove # 删除人员相关配置, 不需要指定参数


4.查询单个人员在es中的记录

接口: es.emp.get.detail.by.id

5.在返回结果中查看是否有之前添加的字段信息

如果有就添加成功, 没有表示字段没有添加成功, 检查配置


5.验证配置成功后,进行全量初始化


清除Redis缓存接口:

本地http://127.0.0.1:3000/server/redis
清除缓存:
es_search_schema_empbasicinfo#35 # 35换成对应环境的公司id
缓存删除接口: es.redis.cache.remove # 删除人员相关配置, 不需要指定参数

高级查询全量初始化:

高级查询初始化:emp.es.init(同步) / emp.es.init.asy(异步),建议使用异步接口

(配置完成时数据进行初始化操作,如果报错先调这两个api的任意一个,点执行这个操作,注意只执行一次,不要重复执行)

切记:成功之后需要一遍全量初始化数据(emp.es.init.asy / emp.es.init),且清除Redis缓存才会在高级查询中展示




有更多需要,请联系产品支持中心。
感谢您的查看!

 
 


  • 无标签