2011-08-12 10 views
9

Ktoś wie, jak wysłać zapytanie JSON do serwera ElasticSearch przez HTTP GET? Wiem, że możesz POST treści JSON do _search, ale POST nie jest dostępny, ponieważ jest to cross-domain. Na przykład, jeśli moja kwerenda wygląda następująco:Wyszukiwanie ElasticSearch przez GET przy użyciu JSON

{ 
    "query": { 
     "query_string": { 
      "fields": ["name", "description"], 
      "query": "Elastic Search" 
     } 
    } 
} 

co chciałbym przekonwertować na coś takiego:

{"query":{"query_string":{"fields":["name","description"],"query":"Elastic Search"}}} 

Czy serwer sposobem GET: 9200/index/typ/_search zawartość = stringifiedquery lub coś podobnego? Próbowałem już q = i content =, a także przekazywanie treści po ?, ale nic nie działa. Ktoś ma jakieś pomysły? Czy mam po prostu pecha?

+0

jaki język inicjuje żądanie? –

+0

język jest prawdopodobnie javascript (z jquery) - naprawdę trudno wymusić na jquery wysłanie żądania GET z treścią posta – DrTech

Odpowiedz

12

Można użyć parametru ciągu zapytania source, aby wysłać treść normalnie treści posta.

Zobacz na dole tej strony: http://www.elasticsearch.org/guide/reference/api/

+0

Czy użycie źródła jako wartości kluczowej działa również dla żądań POST? Pytam, ponieważ próbuję użyć narzędzia RestKit (struktura ObjC dla json req/resp) i zwykle wymaga to par klucz-wartość dla danych json (wartość), które są dołączane do parametrów żądania końcowego wysyłanych do instancji ElasticSearch. – pulkitsinghal

+1

Tak, zadziała – DrTech

+0

To jest niesamowite. Zauważyłem, że ten parametr nie jest tutaj udokumentowany: https://www.elastic.co/guide/en/elasticsearch/reference/1.5/search-uri-request.html Czy ktoś wie, czy jest to wycofana funkcja, która w końcu przestanie działać? działa w przyszłych wydaniach? Wygląda na to, że działa zgodnie z oczekiwaniami w ES 1.5.2. –