Beachten Sie, dass ich ein kompletter Neuling mit ElasticSearch bin und ich bin auf einer Zeitkrise. Ich habe die folgende Anfrage:ElasticSearch - Single-Match zu mehreren
Derzeit unterstützt die Codebasis nur die Suche nach Elementen mit einem bestimmten Zustand. Ich versuche es zu ändern, um eine Liste möglicher Statuswerte zu unterstützen. Jetzt habe ich gesehen, wo man should
und terms
verwenden kann, aber die Ergebnisse für beide sind leere Datensätze.
Ich habe versucht, dies zu suchen, aber Beispiele, die ich gesehen habe, funktionieren entweder nicht oder haben sehr schlecht (wenn überhaupt) Lösungen erklärt, oder hängen davon ab, Seiten der Dokumentation zu lesen und zu absorbieren (für die ich einfach tue) habe nicht die Zeit). Wie würde ich die oberste Abfrage ändern, um nach mehreren Werten zu suchen?
aktualisieren
Lauf folgendes:
curl -XGET localhost:9200/listings/_mapping/listing/field/state?pretty
ich diese Zuordnung erworben haben:
{
"listings" : {
"mappings" : {
"listing" : {
"state" : {
"full_name" : "state",
"mapping" : {
"state" : {
"type" : "string"
}
}
}
}
}
}
}
Update 2
I-Update haben d das Mapping, um es auf not_analyzed
zu setzen und die Option store
zu aktivieren. Daten wurden erneut importiert. Die neue Anfrage sieht so aus:
{
"query":{
"filtered":{
"filter":{
"and":[
{
"bool":{
"should":[
{
"terms":{
"state":["VA","MD"]
}
}
]
}
},{
"bool":{
"must":[
{
"match":{
"status":"Active"
}
}
]
}
}
]
}
}
},
"sort":["dom"],
"size":1
}
Was ist das Mapping für das Feld 'state' und liefert eine Datenprobe dessen, was in dieses Feld gelangt. –
Es ist eine Zeichenfolge (zwei Zeichen, Großbuchstaben) und scheinbar "analysiert". Ich habe versucht, eine Anweisung auszuführen, um es in 'not_analyzed' zu ändern, aber es beschwert sich, dass der Index bereits existiert. –
Ja, wenn Sie die Zuordnung ändern möchten, müssen Sie den Index neu erstellen. Und Sie haben das Mapping noch nicht bereitgestellt :-) und ein Beispieldokument. –