【问题标题】:Empty values in Elasticsearch query stringElasticsearch 查询字符串中的空值
【发布时间】:2015-04-26 14:46:27
【问题描述】:

我在我的 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 没有任何可以帮助我的东西。我可以为此使用 Laravel 雄辩的 ORM。

提前致谢

【问题讨论】:

    标签: php mysql search laravel elasticsearch


    【解决方案1】:

    你可以使用Elasticquent

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

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

    https://github.com/adamfairholm/Elasticquent

    【讨论】:

    • 我正在使用那个包。但它不像ORM eloquent那样工作。 $books = Book::searchByQuery(array('match' => array('title' => 'Moby Dick')));用户可以通过过滤 5 个不同的值来搜索/过滤掉产品。如果我匹配每种类型的组合,这意味着我必须编写 31 个组合/查询,并且只使用需要的一个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    相关资源
    最近更新 更多