【问题标题】:Exact matches in Elasticsearch (Facet searching)Elasticsearch 中的精确匹配(构面搜索)
【发布时间】:2016-11-04 16:28:55
【问题描述】:

我计划将我的搜索和过滤引擎变成 Elasticsearch。通过查看大量文档,我发现 elasticsearch 具有创建方面的能力。我在左侧过滤器导航侧边栏中添加了一些方面,并通过使用 elasticsearch 中的类别字段过滤它们来查询我的产品和方面。

但问题是我不知道如何查询回弹性搜索中的选定方面。

我用过

'filter' => [
    'bool' => [
        'must' => [
            ['match_phrase' => [ 'Material' => 'Aluminum' ]],
            ['match_phrase' => [ 'Length' => '1/2']]
         ]
     ]
 ]

elasticsearch php客户端的body标签中的这段代码。它确实有效,但我有其他长度为 1/2-3 或 1/2-4 的产品。当我查询 1/2 时,Elastic 也会得到 1/2-3 和 1/2-4,因为 '1/2-3' 和 '1/2-4' 也包含 '1/2'。

我想知道如何搜索并准确获取具有 1/2 而不是 1/2-3 或 1/2-4 的产品我应该使用什么查询?

谢谢!

注意:我知道 Facets 已被弃用。我用这个词是因为我习惯了。它现在是 Elasticsearch 2.3 中的聚合。 我正在使用该版本。*

【问题讨论】:

    标签: php elasticsearch aggregation


    【解决方案1】:

    找到我的解决方案!

    我使用了 term 方法而不是 match_phrase。它得到了我所需要的。它搜索完全匹配不包含匹配而不是 match_phrase。 Match_phrase 正在并排搜索确切的短语。

    但是对于术语,您需要使用 not_analyzed 创建字段以获得准确的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-09
      • 2013-07-19
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多