我正在使用弹性搜索,我需要根据我的要求构建相关性搜索查询,但我仍然坚持这一点。
请参阅我的插入部分,我的记录有父子映射
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类型中应用。
请提出任何建议,提前致谢并抱歉冗长的问题:)
答案 0 :(得分:0)
您正在将模糊性修改为2,根据documentation模糊度是Levenshtein编辑距离,这意味着它将匹配最多需要更改两个字母以匹配查询中的值的术语。
如果您搜索Orthop,则至少需要添加4个字符以匹配最接近的字符(Orthopedic)。这就是为什么你得到null的原因。您可以提高fuzinness值或尝试将其作为自动程序。