obs*_*obs 0 elasticsearch booleanquery
我有一个弹性搜索索引,用于存储有关人员的信息.为了找到特定的人我有一些问题,每个人都可以单独工作但是当我使用Bool Query将它们组合起来时,我得到一个错误.
其中一个查询是模糊搜索名称
{
"query": {
"fuzzy_like_this": {
"fields": [
"firstname",
"lastname"
],
"like_text": "Peter"
}
}
}
Run Code Online (Sandbox Code Playgroud)
另一个问题是搜索出生在特定日期范围内的人
{
"query": {
"range": {
"birthdate": {
"from": "1988-12-30",
"to": "1993-12-30"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想结合这两个查询.我的布尔查询:
{
"query": {
"bool": {
"must": [
{
"query": {
"fuzzy_like_this": {
"fields": [
"firstname",
"lastname"
],
"like_text": "Peter"
}
}
},
{
"query": {
"range": {
"birthdate": {
"from": "1988-12-30",
"to": "1993-12-30"
}
}
}
}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
虽然我单独使用它们时两个查询都可以正常工作,但在组合它们时我会收到错误.在我的索引中有人名字是彼得并且出生在这个日期范围内,但即使找不到人,我也应该得到0结果而不是错误.
错误说:"error":"SearchPhaseExecutionException [无法执行阶段[查询],所有分片都失败;嵌套:QueryParsingException [[indexname]没有为[query]注册查询]
是以我想要的方式将查询与bool查询组合在一起还是我只是使用了错误的语法?
我认为您有语法错误,query属于的查询不需要关键字must.换句话说,它应该如下:
{
"query": {
"bool": {
"must": [
{
"fuzzy_like_this": {
"fields": [
"firstname",
"lastname"
],
"like_text": "Peter"
}
},
{
"range": {
"birthdate": {
"from": "1988-12-30",
"to": "1993-12-30"
}
}
}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
有关布尔查询更多信息点击这里
| 归档时间: |
|
| 查看次数: |
3806 次 |
| 最近记录: |