父子关系类型的弹性搜索相关性搜索

时间:2018-03-28 10:33:07

标签: elasticsearch elasticsearch-5

我正在使用弹性搜索,我需要根据我的要求构建相关性搜索查询,但我仍然坚持这一点。

请参阅我的插入部分,我的记录有父子映射

PUT / myindex

  

{“mappings”:{       “my_registration”:{},       “my_specialities”:{         “_parent”:{           “type”:“my_registration”         }       }}

PUT myindex / my_registration / 100

  

{               “Pid”:“100”,               “名字”:“名字1”,               “年龄”:“28”}

PUT myindex / my_registration / 200

  

{               “Pid”:“200”,               “名称”:“name2”,               “年龄”:“28”}

PUT myindex / my_registration / 300

  

{               “Pid”:“300”,               “名称”:“name3”,               “年龄”:“28”}

PUT myindex / my_specialities / 1?parent = 100

  

{“Pid”:“100”,“speciality_name”:“整形外科医生”

     

}

PUT myindex / my_specialities / 2?parent = 200

  

{“Pid”:“200”,“speciality_name”:“骨科”

     

}

PUT myindex / my_specialities / 3?parent = 300

  

{“Pid”:“300”,“speciality_name”:“外科医生”

     

}

请我的方案

1-我需要搜索speciality_name作为整形外科医生

2-我需要搜索speciality_name作为外科医生

3-我需要将speciality_name搜索为Orthopedic

4-我需要将speciality_name搜索为Orth等

5-我需要将speciality_name搜索为Orthop

6-我需要将speciality_name搜索为Orthoepdic

请参阅我的下面的示例查询,我希望得到上述所有案例的结果(需要返回具有相关性分数的记录,我得到案例4和5的空结果)。

/ myindex / my_registration / _search

  

{“query”:{“bool”:{“must”:[{                 “has_child”:{                     “type”:“my_specialities”,                     “查询”:{                         “模糊”:{                             “speciality_name”:{                                 “价值”:“Orthop”,                                 “提升”:1.0,                                 “模糊”:2,                                 “prefix_length”:0,                                 “max_expansions”:100                             }                         }                     },                     “inner_hits”:{}                 }}}}}

请注意,我需要返回结果表单类型my_registration,但搜索是在my_specialities类型中应用。

请提出任何建议,提前致谢并抱歉冗长的问题:)

1 个答案:

答案 0 :(得分:0)

您正在将模糊性修改为2,根据documentation模糊度是Levenshtein编辑距离,这意味着它将匹配最多需要更改两个字母以匹配查询中的值的术语。

如果您搜索Orthop,则至少需要添加4个字符以匹配最接近的字符(Orthopedic)。这就是为什么你得到null的原因。您可以提高fuzinness值或尝试将其作为自动程序。