我正在尝试执行Elasticsearch查询,该查询搜索文本字段(“body”)并返回与我提供的两个多词短语中至少一个相匹配的项目(即:“堆栈溢出”或“堆栈溢出”)。我还希望查询只提供在给定时间戳之后发生的结果,结果按时间排序。
我目前的解决方案如下。我相信MUST工作正常(gte一个时间戳),但BOOL + SHOULD与两个match_phrase是不正确的。我得到以下错误:
Unexpected character ('{' (code 123)): was expecting double-quote to start field name
我认为这是因为我有两个匹配短语在那里?
This是ESMap,我正在使用的ES API的详细信息是here。
{"query":
{"bool":
{"should":
[{"match_phrase":
{"body":"a+phrase"}
},
{"match_phrase":
{"body":"another+phrase"}
}
]
},
{"bool":
{"must":
[{"range":
{"created_at:
{"gte":"thispage"}
}
}
]}
}
},"size":10000,
"sort":"created_at"
}
1条答案
按热度按时间jk9hmnmh1#
我想你只是在
created_at
之后少了一个"
。此外,您还可以同时拥有
must
和should
作为bool
对象的属性,因此这也值得一试。顺便说一句,Postman或任何JSON格式化程序/验证程序都将有助于确定错误所在。