我正在尝试使用Elasticsearch中的提升查询(使用Rails中的官方弹性搜索gems),如下所示:
{
"query"=>{
"boosting"=>{
"positive"=>[
{
"filtered"=>{
"query"=>{
"bool"=>{
"should"=>[
{
"match"=>{
"_all"=>{
"query"=>"Filipstad",
"fuzziness"=>0.7
}
}
}
],
"minimum_number_should_match"=>1
},
"filter"=>{
"terms"=>{
"_type"=>[
"article",
"department"
]
}
}
}
}
}
],
"negative"=>[
{
"filtered"=>{
"filter"=>{
"and"=>[
{
"not"=>{
"term"=>{
"department_id"=>1
}
}
}
]
}
}
}
],
"negative_boost"=>0.1
}
}
}
当我运行此操作时,我收到错误[boosting] query requires 'negative' query to be set'
。我无法弄清楚为什么!我有一个否定的查询?!
答案 0 :(得分:0)
上述查询中存在语法错误,正面的filtered query的查询部分缺少括号
以下内容应该在语法上正确,
{
"query"=>{
"boosting"=>{
"positive"=>[
{
"filtered"=>{
"query"=>{
"bool"=>{
"should"=>[
{
"match"=>{
"_all"=>{
"query"=>"Filipstad",
"fuzziness"=>0.7
}
}
}
],
"minimum_number_should_match"=>1
}
},
"filter"=>{
"terms"=>{
"_type"=>[
"article",
"department"
]
}
}
}
}
],
"negative"=>[
{
"filtered"=>{
"filter"=>{
"and"=>[
{
"not"=>{
"term"=>{
"department_id"=>1
}
}
}
]
}
}
}
],
"negative_boost"=>0.1
}
}
}
但是我应该指出,负升压部分中的滤波查询可以进一步简化。