栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Elastic Search按嵌套文档的数量过滤

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Elastic Search按嵌套文档的数量过滤

除了使用,我认为您别无选择

script
。像这样:

{  "query": {    "bool": {      "must": [        {          "nested": { "path": "transactions", "query": {   "bool": {     "must": [       {         "match": {"transactions.side": "buyer"         }       },       {         "range": {"transactions.date": {  "from": "2014-10-24",  "to": "2015-10-24"}         }       }     ]   } }          }        },        {          "filtered": { "filter": {   "script": {     "script": "if(_source.transactions.size<3) return false;fromDate=Date.parse('yyyy-MM-dd',fromDateParam);toDate=Date.parse('yyyy-MM-dd',toDateParam);count=0;for(d in _source.transactions){docsDate=Date.parse('yyyy-MM-dd',d.get('date'));if(docsDate>=fromDate && docsDate<=toDate){count++};if(count==3){return true;}};return false;",     "params": {       "fromDateParam":"2014-10-24",       "toDateParam":"2015-10-24"     }   } }          }        }      ]    }  }}

range
对于没有日期匹配的那些文档,实际的过滤器是“优化”的。因此,此文档(范围内没有日期)将不会到达费用更高的
script
过滤器。

script
本身首先检查是否交易的数量少于
3
。如果是这样,请不要打扰所有日期检查并返回
false
。如果超过,
3
则取每个日期并与参数进行比较。一旦
3
达到计数,请停止查看其余日期并返回
true



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/371563.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号