【问题标题】:Filter search results with elasticsearch使用 elasticsearch 过滤搜索结果
【发布时间】:2012-08-30 04:06:49
【问题描述】:

我正在为 elasticsearch 使用以下 PHP 客户端:https://github.com/nervetattoo/elasticsearch,但在我的搜索查询中添加多个匹配的字段时遇到问题。

如果已设置,我想按类型选项添加过滤器。

我使用过这种语法,但搜索时只考虑指定的第一个字段。

$type = ($type) ? $type : false;

$options = array(
            'fields' => array('title', 'content', 'profile_id', 'type', 'name', 'description', 'date', 'url'),
            'from' => 0,
            'size' => 10,
            'query' => array(
                ($type ?
                    array('match' => array('name' => $term, 'type' => $type)) :
                    array('match' => array('_all' => $term))
                )
            )
        );

任何建议将不胜感激。

【问题讨论】:

  • “只考虑第一个字段”是什么意思?你能说得具体点吗?

标签: php elasticsearch


【解决方案1】:

如果有人感兴趣,我使用 bool 标志和调整语法解决了它。

$options = array(
   'fields' => array('title', 'content', 'profile_id', 'type', 'name', 'description', 'date', 'url'),
   'from' => 0,
   'size' => 10,
   'query' => array(
      ($type ?
          array(
              'bool' => array(
                  'must' => array(
                      array('term' => array('_all' => $term)),
                      array('term' => array('type' => $type))
                   )
              )
          ) :
            array('match' => array('_all' => $term))
    )
  )
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 2013-02-02
    • 2012-07-05
    • 2017-05-17
    相关资源
    最近更新 更多