【问题标题】:Elasticsearch: how does match query work?Elasticsearch:匹配查询如何工作?
【发布时间】:2014-07-18 07:05:20
【问题描述】:

我是 Elasticsearch 的新手,对匹配查询的工作方式感到困惑。我有这个映射:

{
    "product": {
        "properties": {
            "condition" : { "type" : "string", "store" : "yes", "index": "analyzed"}
        }
    }
}

我批量导入了以下文件

{ "index": {"_index": "myindex", "_type": "product", "_id": "1"}}
{ "condition": "All Quiet on the Western Front"}
{ "index": {"_index": "myindex", "_type": "product", "_id": "2"}}
{ "condition": "All Quieter on the Western Front"}
{ "index": {"_index": "myindex", "_type": "product", "_id": "3"}}
{ "condition": "All Quietest on the Western Frontline"}

我确认所有文档都已成功加载。然后我做一个匹配查询:

{
    "query" : {
        "match" : {
            "condition" : "quiet"
        }
    }
}

它只返回#1 文档。我在这里很困惑。为什么它不返回所有三个文件?我应该使用什么查询来返回这三个文档,因为它们在字段中都有“安静”的根词?

感谢和问候。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您的问题是您在 Elasticsearch 中使用了默认的分析器,该分析器没有词干(例如,将单词分解为词干,例如“quieter”或“quietest”中的“quiet”)。

    如果您想阻止,那么最直接的做法是改用 Snowball 分析器。请注意,您需要将此分析器用于索引和查询,否则您将无法匹配词干。

    雪球分析仪

    使用标准标记器的雪球类型分析器,具有 标准过滤器、小写过滤器、停止过滤器和滚雪球过滤器。

    Snowball Analyzer 是来自 Lucene 的词干分析器,它是 最初基于 snowball.tartarus.org 的雪球项目。

    示例用法:

    {
        "index" : {
            "analysis" : {
                "analyzer" : {
                    "my_analyzer" : {
                        "type" : "snowball",
                        "language" : "English"
                    }
                }
            }
        }
    }
    

    http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis-snowball-analyzer.html

    【讨论】:

    • 约翰,谢谢你的帮助!我阅读了您提到的所有内容,但很难将雪球放入我的上述示例(索引和搜索)。
    • so 在 "type":string 后面加上 "analyzer": "snowball",相信就足够了。如果由于某种原因不起作用,您可以在查询中添加相同的参数,但我相信没有它应该没问题。
    • 在映射中添加了 "analyzer": "snowball"。重新创建索引并再次加载数据。在查询中使用或不使用“分析器”:“雪球”时,它仍然不起作用。这是我在查询中使用的:'{“query”:{“match”:{“condition”:{“query”:“quieter”,“analyzer”:“snowball”}}}}'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    • 2021-05-20
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多