如何进行全文搜索并进行过滤?我想在language_id=10
的文档中搜索文本。我已经这样试过了:
{
"query": {
"query_string": {
"query": "Declared"
},
{
"filtered": {
"filter": {
"term": {
"language_id": 10
}
}
}
}
}
}
但似乎不正确。如何纠正?
答案 0 :(得分:14)
是的,过滤后的查询的语法有点麻烦。 AFAIK看起来应该是这样的:
{
"query":{
"filtered":{
"query":{
"query_string":{
"query":"Declared"
}
},
"filter":{
"term":{
"language_id":10
}
}
}
}
}
答案 1 :(得分:11)
在5.2版中,过滤后的查询被bool查询替换,并在我的Elastic 5.2实例上返回错误。请参阅here。
新语法是:
{
"query":{
"bool":{
"must":{
"query_string":{
"query":"Declared"
}
},
"filter":{
"term":{
"language_id":10
}
}
}
}
}
答案 2 :(得分:3)
抱歉Ashalynd但是过滤器没有放在你答案的正确位置。
这样做效果更好:
{
"query":{
"filtered":{
"query":{
"query_string":{
"query":"Declared"
}
},
"filter":{
"term":{
"language_id":10
}
}
}
}
}