wordpress - ElasticPress - 搜索元和高级自定义字段不起作用

标签 wordpress elasticsearch advanced-custom-fields elasticsearch-plugin searchly

我们将 Wordpress 4.9.5 与 ElasticPress 2.5 和 Searchly 结合使用。

默认搜索效果很好。然而,我们正在索引数十万个零件号,每个零件号都是 WordPress 中的一篇文章。与许多部件号一样,它们的标题如 ABC-12-B23-QQ。

我们开箱即用 ElasticPress。它被宣传为开箱即用,但是......

它似乎只搜索帖子标题。它根本不搜索我们的高级自定义字段。我们使用 ACF 来处理所有零件详细信息,例如长度、颜色和表面处理,因此能够搜索这些字段非常重要。

如何让 Elasticpress 搜索我的自定义字段?我需要使用自定义映射吗?

https://github.com/10up/ElasticPress

注意:我发布此内容是为了将其包含在 stackoverflow 中,以方便以后搜索的其他人。如果我在搜索之初就在 Stackoverflow 上找到了这个,那会节省我几个小时。 :)

最佳答案

事实证明,是的,ElasticPress 确实会自动映射所有元字段,但默认情况下,它不会搜索它们

根据文档( https://github.com/10up/ElasticPress ),

“以下是仅 ElasticPress 支持的特殊参数。

search_fields (array)
If not specified, defaults to array( 'post_title', 'post_excerpt', 'post_content' ).

这是我的问题。要解决这个问题,您必须告诉 ElasticPress 要搜索哪些字段。

ElasticPress 文档包含使用 WP_Query 的此示例:

new WP_Query( array(
    's'             => 'meta search phrase',
    'search_fields' => array(
        'post_title',
        'post_content',
        'post_excerpt',
        'meta' => array( 'meta_key_1', 'meta_key_2' ),
    ),
) );

我确实需要 Hook 现有的搜索查询,因此这里是我使用 pre_get_posts 操作所做的示例:

function my_search_filter($query) {
  if ( !is_admin() && $query->is_main_query() ) {
    if ($query->is_search() ) {
        $query->set('search_fields', array(
        'post_title',
        'meta' => array( 'bin_part_number',
                        'shelf_part_number',
                        )));
    }
  }
}
add_action('pre_get_posts','my_search_filter',1);

关于wordpress - ElasticPress - 搜索元和高级自定义字段不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50045798/

相关文章:

php - WooCommerce 按钮可清除购物车、添加一件商品并前往结帐

jquery - 在 wordpress post [jQuery] 中设置动态 css 背景图片

css - 分隔 4 个边框(边框底部)并使用填充 css 在列 (th) 之间留出空间

javascript - 谷歌地图 v3 API 和 WordPress ACF : Multiple Custom Markers

wordpress - 高级自定义字段 (ACF) Pro acf-json 工作流程

mysql - 添加/更新并显示元值数组

docker - 如何使用fluentd收集pod日志并将其发送到elasticsearch?

java - 在 gradle build 中启动 elasticsearch 以进行集成测试

elasticsearch - Elasticsearch edge_ngram问题?

php - PHP在shortcode标签之外显示shortcode的内容