Hi, I have the an issue that I cannot search from the attached document using NEST client
My mapping is
{
"mydocs": {
"mappings": {
"indexdocument": {
"properties": {
"docLocation": {
"type": "string",
"index": "not_analyzed",
"store": true
},
"documentType": {
"type": "string",
"store": true
},
"file": {
"type": "attachment",
"fields": {
"content": {
"type": "string",
"term_vector": "with_positions_offsets",
"analyzer": "full"
},
"author": {
"type": "string"
},
"title": {
"type": "string",
"term_vector": "with_positions_offsets",
"analyzer": "full"
},
"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"
}
}
},
"filePermissionInfo": {
"properties": {
"accessControlType": {
"type": "string",
"store": true
},
"accountValue": {
"type": "string",
"store": true
},
"fileSystemRights": {
"type": "string",
"store": true
},
"isInherited": {
"type": "string",
"store": true
}
}
},
"id": {
"type": "double",
"store": true
},
"lastModifiedDate": {
"type": "date",
"store": true,
"format": "strict_date_optional_time||epoch_millis"
},
"otherDetails": {
"type": "string"
},
"title": {
"type": "string",
"store": true,
"term_vector": "with_positions_offsets"
}
}
}
}
}
}
My Post query is working fine
POST /mydocs/_search
{
"query" : {
"bool" : {
"must" : [
{ "match" : { "filePermissionInfo.accountValue" : "S-1-5-18"}} ,
{ "match":{"otherDetails":"xyz"}},
{ "match":{"file.content":"abc"}}
]
}
}
}
But when I convert it to C#, Its not working. If I remove the ' m.Match(mt1 => mt1.Field(f1 => f1.File.Content).Query(queryTerm))' from the Nest query , it returns a resultset. So I think the problem is with the attachment field. It is base64 encoded
var queryResult = client.Search<IndexDocument>(s => s
.Index("mydocs")
.Query(q => q
.Bool(b => b
.Must(m =>
m.Match(mt1 => mt1.Field(f1 => f1.DocumentType).Query(queryTerm)) &&
m.Match(mt2 => mt2.Field(f2 => f2.FilePermissionInfo.First().AccountValue).Query(accountName)) &&
m.Match(mt3 => mt3.Field(f3 => f3.OtherDetails).Query(other))
))) );
Anyone please help.