【问题标题】:Elasticsearch not sure if filter or query should be firstElasticsearch 不确定是否应该首先使用过滤器或查询
【发布时间】:2015-02-22 03:03:00
【问题描述】:

我正在为我的 Laravel 应用程序使用 ES。

我想做的是搜索过滤。

我在标题字段上进行全文搜索,然后检查价格是否在 0 - 9999 之间,并且活动设置为 1。

但是这两个查询似乎都适用于我的测试数据。但是它们之间有什么区别呢? “查询”的顺序有什么不同吗?

忽略语法,只看查询结构。

第一次查询

'filtered' => [
                'query' => [
                    'match' => ['title' => Input::get('query')]
                ],
                'filter'=> [
                    'bool' => [
                        'must' => [
                            ['term' => [ 'active' =>  1] ],
                            [ 'range' => [
                                    'price' => [
                                        'gte' => 1,
                                        'lte' => 99999,
                                    ]
                                ]
                            ]
                        ]
                    ]
                ],
            ],

第二次查询

'filtered' => [
    'filter' => [
      'bool' => [
         'must' => [
            ['term' => [ 'status' =>  1] ], 
            [ 
               'range' => [
                  'price' => [
                      'gte' => 1,
                      'lte' => 99999,
                  ]
               ] 
            ]
         ]               
      ]
  ],
  'query' => [
      'match' => [
        'title' => Input::get('query', '')
      ]
   ]
]

提前致谢。

【问题讨论】:

    标签: php laravel elasticsearch


    【解决方案1】:

    filterqueryfiltered query 中的提及顺序完全没有区别。对于文档是否首先执行 queryfilter 的决定取决于称为 strategy 的专家级可选字段 filtered query。欲了解更多信息,请阅读this

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-17
      • 2015-04-23
      • 1970-01-01
      • 2015-05-13
      • 2015-09-08
      • 2011-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多