elasticsearch,full-text-search,Search,Filter,elasticsearch,Full Text Search" /> elasticsearch,full-text-search,Search,Filter,elasticsearch,Full Text Search" />

Search 弹性搜索中过滤器的正确使用

Search 弹性搜索中过滤器的正确使用,search,filter,elasticsearch,full-text-search,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":

我键入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什么也找不到!我的错误是什么,请告诉我?

看看这个,您使用了默认映射。现场全局分类变成一个字符串,使用标准分析仪进行分析。因此,索引中有几个术语:

99a74e52
d122
4177
b77c
12427d84f365

在这种情况下,我的最佳选择是添加一个映射,并使字段globalCategory不被分析,这样字段就被用作一个术语,过滤器就可以完成它的工作。

你能重现你所做的全部操作吗。从创建索引(如果有的话)、创建映射(如果有的话)、为文档编制索引到最后发布搜索。请发布映射。要在索引中添加数据,我使用C#和库嵌套。映射是从C#类自动生成的。GlobalCategory字段的类型为Guid,在映射时转换为“字符串”。因为值种类繁多​​在JSON格式的“parameters”映射中,其大小约为3兆字节。我使用了属性not_Analysis field globalCategory:
[ElasticProperty(Index=FieldIndexOption.NotAnalyzed)]
公共Guid globalCategory{get;set;}
但它没有给出任何结果……您能将当前映射添加到您的问题中吗?您可以使用
{“映射”:{“productclustermodeles”:{“properties”:{“globalCategory”:{“type”:“string”},“id”:{“type”:“string”},“products”:{“type”:“string”}}}
我发现一个错误!POCO mapping需要调用哪些内容:
client.CreateIndex(“products\u index”,s=>s.AddMapping(m=>m.MapFromAttributes())
);我当时做的是:
“globalCategory”:{“type”:“string”,“index”:“not_analysis”}
。过滤器开始按我的需要工作。