我使用Grails ElasticSearch插件并希望使用以下查询:
"bool" : {
"must" : {
"term" : { "user" : "kimchy" }
},
"must_not" : {
"range" : {
"age" : { "from" : 10, "to" : 20 }
}
},
"should" : [
{
"term" : { "tag" : "wow" }
},
{
"term" : { "tag" : "elasticsearch" }
}
],
"minimum_should_match" : 1,
"boost" : 1.0
}
使用Grails插件中的groovy api,我会写出类似的东西:
def res = userAgentIdentService.search() {
"bool" {
"must" {
term("user" : "kimchy" )
}
"must_not" {
"range" {
age("from" : 10, "to" : 20 }
}
}
"should" : [
{
term( "tag" : "wow" )
}
{
term("tag" : "elasticsearch" )
}
]
"minimum_should_match" = 1
"boost" = 1.0
}
}
我的查询无效!
我在哪里定义minimum_should_match以及如何定义它?
我如何以grails / groovy方式编写“should”:[...]方括号表示法?
答案 0 :(得分:0)
我认为您的搜索请求中缺少几个json级别。我不认为你可以使用查询而不指定它是一个查询(它也可以是一个过滤器,甚至是其他东西)。从groovy api参考文献中查看this example:
def search = node.client.search {
indices "test"
types "type1"
source {
query {
terms(test: ["value1", "value2"])
}
}
}