Search 弹性搜索中过滤器的正确使用
我键入Elasticsearch此文档: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":
{
"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”}
。过滤器开始按我的需要工作。