Meh*_*ran 5 nested elasticsearch elasticsearch-query
在我之前的问题中,我fields在query_string查询中介绍了它,以及它如何帮助我搜索文档的嵌套字段.
{
"query": {
"query_string": {
"fields": ["*.id","id"],
"query": "2"
}
}
}
Run Code Online (Sandbox Code Playgroud)
但它只适用于匹配,如果我想做一些比较怎么办?经过一些阅读和测试,似乎range不支持查询fields.有没有什么方法可以range在一个日期上执行查询,而不是可以分散在文档层次结构中任何位置的字段?
即考虑以下文件:
{
"id" : 1,
"Comment" : "Comment 1",
"date" : "2016-08-16T15:22:36.967489",
"Reply" : [ {
"id" : 2,
"Comment" : "Inner comment",
"date" : "2016-08-16T16:22:36.967489"
} ]
}
Run Code Online (Sandbox Code Playgroud)
是否有搜索date字段(如date > '2016-08-16T16:00:00.000000')匹配给定文档的查询,因为嵌套字段,而没有明确地给出地址Reply.date?像这样的东西(我知道以下查询是不正确的):
{
"query": {
"range" : {
"date" : {
"gte" : "2016-08-16T16:00:00.000000",
},
"fields": ["date", "*.date"]
}
}
}
Run Code Online (Sandbox Code Playgroud)
查询range本身不支持它,但是,您可以query_string(再次)利用查询以及可以使用通配符字段并且它支持范围查询的事实来实现您所需要的:
{
"query": {
"query_string": {
"query": "\*date:[2016-08-16T16:00:00.000Z TO *]"
}
}
}
Run Code Online (Sandbox Code Playgroud)
上述查询将返回您的文档,因为Reply.date匹配*date
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |