2016-12-05 17 views
0

Ich habe Fragen zu query_string Abfrage in ElasticSearch. Ich möchte Volltextsuche über alle Typen und Felder im Index erstellen. Wird die Zeichenfolge query_string für verschachtelte Objekte ausgeführt? So zum Beispiel habe ich diese ZuordnungElasticsearch verschachteltes Objekt query_string

{ 
    "my_index": { 
    "mappings": { 
     "my_type": { 
     "properties": { 
      "group": { 
      "type": "string" 
      }, 
      "user": { 
      "type": "nested", 
      "properties": { 
       "first": { 
       "type": "string" 
       }, 
       "last": { 
       "type": "string" 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 

Und die Abfrage

GET /my_index/_search 
{ 
    "query": { 
     "query_string" : { 
      "query" : "paul" 
     } 
    } 

} 

wenn ich die Abfrage aufrufen, ES in allen Bereichen einschließlich verschachtelter oder nur in my_type Objekt suchen und für verschachtelte Suche I muss eine verschachtelte Abfrage verwenden?

Antwort

1

Sie keine verschachtelten Felder aus einer query_string an der Wurzel verweisen können. dh das wird nicht funktionieren:

{ 
    "query": { 
     "query_string": { 
      "query": "myNestedObj.myTextField:food" 
     } 
    } 
} 

in bestimmten verschachtelten Feldern suchen, können Sie die verschachtelte Klausel verwenden müssen:

{ 
    "query": { 
     "nested": { 
     "path": "myNestedObj", 
     "query": { 
     "query_string": { 
      "query": "myNestedObj.myTextField:food" 
     } 
     } 
     } 
    } 
    } 
} 

Allerdings habe ich festgestellt, dass die pseudo-Feld „_all“ tut umfassen Felder verschachtelt, so dokumentiert diese Abfrage würde finden ‚Lebensmittel‘ in myNestedObj.myTextField (wie auch anderswo)

{ 
    "query": { 
     "query_string": { 
      "query": "_all:food" 
     } 
    } 
} 
+0

Dank @anthonybruni, mit „Allerdings habe ich, dass die pseudo-Feld gefunden haben‚_all‘ enthält verschachtelte Felder, so diese Abfrage wo Wenn Sie in myNestedObj.myTextField Dokumente finden, die 'food' enthalten, ist diese Antwort genau das, wonach ich gefragt habe – Pauli

0

Versuchen:

GET my_index/_search?q=paul 
Verwandte Themen