Elasticsearch嵌套查询匹配和/或
问题描述:
例如,我有一个包含数据如下:Elasticsearch嵌套查询匹配和/或
{
author: "test",
books: [
{
name: "first book",
cost: 50
},
{
name: "second book",
cost: 100
}
]
}
我想搜索的拥有所有书籍cost > 40
的作者。这个查询将如何?字段books
被映射为nested property
。
答
对于大于40(在次点击)一种书的成本作者姓名,如下一些查询会工作
POST http://192.168.0.68:9200/library/Book/_search
{
"fields": ["author"],
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"nested": {
"path": "books",
"filter": {
"range": {
"books.cost": {
"gt": 40
}
}
}
}
}
}
}
}
对于具有成本更大的所有书籍超过40,我不得不在获得响应后,在客户端手动处理嵌套字段的集合。
不确定脚本是否适用于此处以将过滤器应用于所有嵌套对象。
参考
没错使用该查询以及对任何书籍大于40,效果很好。但是,所有人似乎都是一个难题。客户端过滤器将是我最后的手段,但如果它在弹性搜索中根本不可能的话。谢谢! – 2014-09-03 07:21:13