我有一个用于存储人员信息的弹性搜索索引。为了找到特定的人,我有一些查询,他们每个人都单独工作,但是当我使用 Bool Query 组合它们时,我得到一个错误。
其中一个查询是对名称的模糊搜索
{
"query": {
"fuzzy_like_this": {
"fields": [
"firstname",
"lastname"
],
"like_text": "Peter"
}
}
}
另一个查询是搜索在特定日期范围内出生的人
{
"query": {
"range": {
"birthdate": {
"from": "1988-12-30",
"to": "1993-12-30"
}
}
}
}
现在我想结合这两个查询。我的布尔查询:
{
"query": {
"bool": {
"must": [
{
"query": {
"fuzzy_like_this": {
"fields": [
"firstname",
"lastname"
],
"like_text": "Peter"
}
}
},
{
"query": {
"range": {
"birthdate": {
"from": "1988-12-30",
"to": "1993-12-30"
}
}
}
}
]
}
}
}
虽然当我单独使用它们时这两个查询都可以正常工作,但在组合它们时会出现错误。我的索引中有些人的名字是彼得并且出生在这个日期范围内,但即使没有找到人,我也应该得到 0 个结果而不是错误。
错误说:“错误”:“SearchPhaseExecutionException [无法执行阶段 [query],所有分片失败;嵌套:QueryParsingException [[indexname] 没有为 [query] 注册查询]
是否以我想要的方式组合查询,而不是使用 bool 查询,或者我只是使用了错误的语法?