Couchbase - Elasticsearch搜索问题

时间:2013-09-26 09:02:02

标签: elasticsearch couchbase

我已经按照Couchbase - ElasticSearch教程集成,我正在使用啤酒样本桶进行测试。

我有一个问题。

我可以进行如下查询:

{
    "query": {
        "match": {
            "doc.name": "IPA"
        }
    }
}

但如果我这样搜索:

{
    "query": {
        "filtered": {
            "query": {
                "match_all": { }
            },
            "filter": {
                "term": { "doc.name": "IPA" }
            }
        }
    }
}

我没有得到任何结果。

使用其他字符串字段我没有问题,例如“type”:“beer”

{
    "query": {
        "match": {
            "doc.type": "beer"
        }
    }
}

{
    "query": {
        "filtered": {
            "query": {
                "match_all": { }
            },
            "filter": {
                "term": { "doc.name": "beer" }
            }
        }
    }
}

我不知道为什么。

提前致谢

1 个答案:

答案 0 :(得分:1)

这是因为您的分析仪。对于字符串,默认分析器会降低输入。因此,IPA被索引为ipa。

术语过滤器不会分析您的输入,因此,您搜索IPA,并且在索引中,您有ipa - > IPA!= ipa,因此,文档不匹配。

另一方面,匹配查询使用为字段设置的分析器分析您的输入,因此,您的输入是小写的,并且您搜索ipa。

我希望这是有道理的。