我必须在弹性搜索的索引数据中搜索文件位置路径。我以编码格式索引位置路径(尝试不编码)。以下查询返回所有索引数据,而不进行任何匹配。如果我使用 id 或标题字段进行搜索,则会返回正确的结果。有人有任何想法吗?
{
"query": {
"match": {
"location": "%5c%5c25.94.150.212%5cfoldername%5cintroduction_to_c_sharp.ppt"
}
}
}
我从浏览器http://localhost:9200/documents
获得的回复{
"documents": {
"aliases": {},
"mappings": {
"indexdocument": {
"properties": {
"document": {
"type": "attachment",
"fields": {
"content": {
"type": "string"
},
"author": {
"type": "string"
},
"title": {
"type": "string",
"term_vector": "with_positions_offsets"
},
"name": {
"type": "string"
},
"date": {
"type": "date",
"format": "strict_date_optional_time||epoch_millis"
},
"keywords": {
"type": "string"
},
"content_type": {
"type": "string"
},
"content_length": {
"type": "integer"
},
"language": {
"type": "string"
}
}
},
"documentType": {
"type": "string"
},
"id": {
"type": "long"
},
"lastModifiedDate": {
"type": "date",
"format": "strict_date_optional_time||epoch_millis"
},
"location": {
"type": "string"
},
"title": {
"type": "string"
}
}
}
},
"settings": {
"index": {
"creation_date": "1465193502636",
"number_of_shards": "5",
"number_of_replicas": "1",
"uuid": "5kCRvhmsQAGyndkswLhLrg",
"version": {
"created": "2030399"
}
}
},
"warmers": {}
}
}
创建具有一个字段附件的索引代码:
public void CreateDocumentIndex()
{
this.client.CreateIndex("documents", c => c.Mappings(mp=>mp.Map<IndexDocument>
(m => m.Properties(ps => ps.Attachment
(a => a.Name(o => o.Document)
.TitleField(t => t.Name(x => x.Title).TermVector(TermVectorOption.WithPositionsOffsets))
)))));
}
要索引的属性
public class IndexDocument
{
public long Id { get; set; }
public string Title { get; set; }
public string DocumentName { get; set; }
// Base64-encoded file content.
public string Document { get; set; }
public string DocumentType { get; set; }
[Nest.String(Store = true, Index = Nest.FieldIndexOption.NotAnalyzed)]
public string Location { get; set; }
public DateTime LastModifiedDate { get; set; }
}
答案 0 :(得分:0)
如果您的location
字段为not_analyzed
,则可以使用term
查询而不是match
。
{
"query": {
"term": {
"location": "%5c%5c25.94.150.212%5cfoldername%5cintroduction_to_c_sharp.ppt"
}
}
}
否则,您需要制作location
字段not_analyzed
(见下文)并重新索引数据。
PUT your_index/_mapping/your_type
{
"properties": {
"location": {
"type": "string"
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
然后您可以使用以下term
查询
{
"query": {
"term": {
"location.raw": "%5c%5c25.94.150.212%5cfoldername%5cintroduction_to_c_sharp.ppt"
}
}
}