Wie in der Abbildung gezeigt habe ich ein Gruppenfeld mit einem Array von String-Werten. Allerdings bekomme ich eine Ausnahme beim Versuch, es auf eine List<string>
Eigenschaft abzubilden.Zuordnung eines Array-Feldes zu einer C# -Stringliste mit Elasticsearch
So etwas wie Error converting value \"[134706634,134706635]\" to type System.Collections.Generic.IList[System.String]'
Ich habe versucht, einige verschiedene Attribute mit, dass Elasticsearch bietet aber keine gearbeitet. Ein JSON-Converter-Attribut funktioniert gut, muss aber viel Code schreiben, damit es so funktioniert, wie ich es möchte.
Gibt es eine sauberere und nativere Methode, dies mit NEST zu tun?
C# Code:
var groupQuery = await
elastic.SearchAsync<CorrelationGroup>(s => s
.Query(q => q
.Bool(b => b
.Must(
m => m.ConstantScore(c => c
.Filter(f => f
.Term(x => x.Type, counterType))
),
m => m.ConstantScore(c => c.
Filter(f => f
.Term(x => x.TypeValue, counterTypeValue))))))
.Index("correlation-groups").AllTypes());
public class CorrelationGroup
{
[Text(Name = "type")]
public string Type { get; set; }
[Text(Name = "type_value")]
public string TypeValue { get; set; }
public List<string> Groups { get; set; }
}
Quelle JSON-Datei:
[ { "type": "APN", "type_value": "internet", "groups": [150994936,150994940] }, { "type": "APN", "type_value": "internet", "groups": [150984921,150984922] }, { "type": "APN", "type_value": "internet", "groups": [150984917,150984918,150984921,150984922] } ]
Meine Vorlage ist:
{
"template": "correlation-groups",
"settings" : {
"number_of_shards" : 2,
"number_of_replicas" : 0,
"index" : {
"store" : { "compress" : { "stored" : true, "tv": true } }
}
},
"dynamic_templates": [
{
"string_template" : {
"match" : "*",
"mapping": { "type": "string", "index": "not_analyzed" },
"match_mapping_type" : "string"
}
}
],
"mappings": {
"_default_": {
"properties": {
"type": { "type": "string", "index": "not_analyzed" },
"type_value": { "type": "string", "index": "not_analyzed" },
"groups": { "type": "string"}
}
}
}
}
Es scheint, dass Ihr Array tatsächlich eine Zeichenfolge ist. Sieh die entflochtenen doppelten Anführungszeichen um das Array "\" [134706634,134706635] \ "'? Es ist sehr wahrscheinlich, dass Ihr 'groups' Array zu irgendeinem Zeitpunkt mit einem String versehen und als String gespeichert wurde. – Val
Wäre toll zu sehen, wie Sie Mapping für den Index erstellen und wie Sie Daten indexieren. – Rob
@Val Ich habe in der Vorlage den Typ string angegeben (das ist, was ich von Docs verstanden habe) sollte ich stattdessen etwas anderes verwenden? – Cemre