我是elasticseach
的新用户,我在向查询添加过滤器方面遇到了一些问题。
我的域类是这样的:
Class A {
String name
A_Status status
static searchable = {
status component: true
}
}
Class AImpl extends A {
}
Class A_Status {
String name
static searchable = {
root : false
only = 'name'
}
}
在我的控制器上,我正在进行的查询是:
def res = elasticSearchService.search()
{
bool {
must {
term("status.name": "ACTIVE")
}
}
}
我尝试将searchable
字段更改为AImpl
或放置"searchable = true"
,但结果相同,查询总是为空,应该得到4个结果。
我发现的另一个奇怪的事情是,进行uri搜索会给我预期的结果,但身体查询没有。
curl -XGET 'http://localhost:9200/com.sisconline.entities/_search?q=status.name=ACTIVE'
这有4次点击。
curl -XPOST 'http://localhost:9200/com.sisconline.entities/_search' -d '{
"query" : {
"term":{ "status.name":"ACTIVE"}
}
}'
这会得到0次点击。
我正在使用Grails 2.3.4
和elasticsearch plugin 0.0.3.5
。
问候。
答案 0 :(得分:2)
我终于设法解决了问题:
must {
nested {
path = "status"
query {
bool {
must {
term("status.name": "active") }
}
}
}
}
希望它可以帮助他人。