ES搜索“其它”选项

    情景再现:

    ElasticSearch使用笔记 - 图1

    如图,搜索“干预类型”。最后一项“其他”表示除了前面列举的其他数据。

    如果用SQL筛选“其他”,写出来大致是这样:

    Select * fromtablewheretypenot in (‘药物’,’生物制品’,’混合疗法’……)

    这样写勉强还好。

    但是,既然提到了ES,我们就可以在索引层下功夫。

    在建立索引的时候,专门处理该字段,凡事不属于上面列出的类型,都标记为‘其他’,可以这样写:

    1. function processType($type)
    2. {
    3. $type_list = ['药物','生物制品','混合疗法'...];
    4. if(!in_array($type,$type_list)){
    5. $type = '其他';
    6. }
    7. return $type;
    8. }

    然后,“其他”就可以和其他的筛选项一起愉快的筛选了。