elasticsearch - 如何按特定字段过滤 Elasticsearch 词或短语建议器?

标签 elasticsearch elasticsearch-5

我正在使用 Elasticsearch 5.3 并提供“did-you-mean”功能,我想将术语或短语建议器的上下文限制为仅用户的文档而不是索引中的所有文档。这是我当前使用术语建议器的 _search 查询正文(它根据所有索引文档返回建议):

{
    "suggest": {
        "text": "docyment",
        "title_correction: {
            "term": {
                "size": 2,
                "prefix_length": 3,
                "field": "title",
                "analyzer": "standard",
                "min_doc_freq": 1,
            }
        }
    }
}

我可以看到过滤是过去 phrase_suggester 的一部分( check this issue ),但似乎它已被弃用并被上下文建议器取代(尽管仅适用于完成字段),所以它是不适合我的情况。

我需要的是一个像这样的过滤器:"filter": {"term": {"user_id": 12345}} 这样建议将基于用户的文档。

如果有人能回答我的问题,我将不胜感激:

0- 为什么短语建议器已弃用过滤器?仅仅为了提高性能?

1-如果它已被其他东西替换并且有推荐的方法,那么我可以解决我的问题吗?

(我在 elastic forum 中问过同样的问题,如果我找到答案,我会更新这两个问题)

最佳答案

我基本上有同样的需求,有一个修剪查询应该允许排除您不想要的文档:看看 How do I add a weight (or prefilter) for a phrase suggester?

关于elasticsearch - 如何按特定字段过滤 Elasticsearch 词或短语建议器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46021620/

相关文章:

elasticsearch - 总数不符合返回的匹配数

elasticsearch - 自定义停用词分析器无法正常运行

elasticsearch - 限制来自ElastAlert的电子邮件通知中的内容

elasticsearch - elasticsearch得分max_score = -1

elasticsearch - 如何将ElasticSearch原始数据导出到CSV

elasticsearch - 如何在写入ElasticSearch时使用更新API(无痛)连接对象而不是整个对象

elasticsearch - ELK查询-多个查询参数

elasticsearch - 有什么简单的方法可以通过logstash将数据推送到elasticsearch

elasticsearch-5 - Elasticsearch 词查询两个相互依赖的属性的 AND 条件

elasticsearch - Elasticsearch 6.0.0 中的 "_doc"