php - Elasticsearch 查询字符串中的空值

标签 php mysql search laravel elasticsearch

我在 Laravel 应用程序中使用 ES 来搜索表格/类型。

我的用户总共可以搜索 5 列,这意味着总共可以有 31 个查询组合。

所以我现在的问题是我是否可以使用相同的查询但不向 ES 提供所有搜索参数。或者以某种方式编写动态查询。

例如:

'filtered' => [
  'query' => [
    'match' => ['title' => Input::get('query')]
   ],
   'filter'=> [
     'bool' => [
       'must' => [
         ['term' => [ 'type' => 1] ],
         ['term' => [ 'state' => 22] ],
         ['term' => [ 'city' => ] ], (empty)
         [
           'range' => [
             'price' => [
                'gte' => , (empty)
                'lte' => , (empty)
             ]
           ]
         ]
       ]
     ]
  ],
],

否则我必须编写这个查询的 31 种不同组合 - 如果 ES 没有任何可以帮助我的东西。我可以使用 Laravels eloquent ORM 来实现此目的。

提前致谢

最佳答案

您可以使用Elasticquent

Elasticquent 通过将 Elasticsearch 和 Eloquent 模型映射到 Elasticsearch 类型,使使用它们变得更加容易。您可以使用默认设置或定义 Elasticsearch 应如何在模型中对您的 Eloquent 模型进行索引和搜索。

Elasticquent 使用官方 Elasticsearch PHP API。首先,您应该了解 Elasticsearch 的工作原理(索引、类型、映射等)的基本知识。

https://github.com/adamfairholm/Elasticquent

关于php - Elasticsearch 查询字符串中的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28704937/

相关文章:

javascript - 小于或等于 NN 的预定义数字的最佳可能组合和

php - 无法在Docker镜像中使用Composer安装依赖项

php - 未定义的属性:CI_DB_mysql_result::$result

php - 如何将同一个订单号的产品价格相加?在 codeigniter 中加入查询

image - 允许按许可证过滤的 Web 图像搜索 API

search - 如何显示增量搜索中的匹配数?

php - 为什么 PDOStatement 在单次获取时返回 false?

PHP SQL 查询比较预定义日期时间格式中的 DATE

mysql - 从没有 SUBSTRING_INDEX(GROUP_CONCAT()) 的有序组中选择第一行

algorithm - 如何使用后缀树在线性时间内找到这样的字符串?