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

在PHP中elasticsearch多个范围

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

在PHP中elasticsearch多个范围

您的回答是正确的。顺便说一句,如果您使用

bool
过滤器而不是一
and/or/not
组过滤器,性能往往会更好。并非总是如此,但通常如此。

和/或/不适用于“跨越式迭代器”模式。这将在第一个过滤器中找到第一个匹配的文档,然后尝试“跳过”其余的过滤器迭代器,直到它们都在同一文档上对齐为止。这使得它对于稀疏过滤器非常有效。

相比之下,Bool过滤器会按位组合位图(表示匹配的文档),这对于密度更高的过滤器而言往往更为有效。您的过滤器看上去相对密集:

  • number_of_products
    过滤器是所有
    values >= $products['min']
    ,这可能是一个大数目的匹配文档的所有…在一个连续的范围
  • price
    滤波器的密度取决于范围的大小,但也可能非常密集(且连续)。如果没有$ price [‘max’],它也将无穷大。

在实践中,布尔值倾向于提供比和/或/非更好的性能,并且在此示例中可能会比YMMV更好。:)

$searchParams = [    'index' => 'my_index',    'type' => 'my_type',    'body' => [        'query' => [ 'filtered' => [     'filter' => [         'bool' => [  'must' => [      [          'range' => [   'number_of_products' => [       'gte' => $products['min']   ]          ]      ],      [          'range' => [   'price' => [       'gt' => $price['min'],       'lt' => ($price['max'] ? : null)   ]          ]      ]  ]         ]     ] ]        ]    ]];


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

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

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