在ElasticSearch中正确使用过滤器

时间:2014-12-26 08:42:23

标签: search filter elasticsearch full-text-search

我输入Elasticsearch这个文件:

    {
    "id":"b35d0a97-5f00-41a0-a321-30d387a65692",
    "products": ["http://...."],
    "parameters": {
        "Gender": ["Women"],
        "Waistline": ["Empire"],
        "Is_customized": ["Yes"],
        "Dresses length": ["Knee-length"],
        "Silhouette": ["Sheath"],
        "Neckline": ["Square collar"],
        "Sleeve length": ["Short"],
        "Style": ["Casual"],
        "Material": ["Acetate","Spandex","Viscose"]
    },
    "globalCategory": "99a74e52-d122-4177-b77c-12427d84f365"
}

我试图使用过滤器找到它:

{
    "query": {
        "filtered": {

            "filter": {

                    "term": 
                    {
                        "globalCategory": "99a74e52-d122-4177-b77c-12427d84f365"
                    }


            }
        }
    }
}

但是Elasticsearch什么都找不到!我的错误是什么,请告诉我?

1 个答案:

答案 0 :(得分:0)

看看这个,您使用了默认映射。字段globalCategory成为使用标准分析器分析的字符串。因此,您的索引中有一些术语:

99a74e52
d122
4177
b77c
12427d84f365

在这种情况下,我最好的选择是添加一个映射并使字段globalCategory not_analyzed,这样该字段用作一个术语,过滤器将完成它的工作。