2013-09-02 12 views
9

Mam kwerendy z multi_match w Elasticsearch:Które pole pasuje do zapytania w wyszukiwarce multi_match w Elasticsearch?

{ 
    "query": { 
    "multi_match": { 
     "query": "luk", 
     "fields": [ 
     "xml_string.autocomplete", 
     "state" 
     ] 
    } 
    }, 
    "size": 10, 
    "fields": [ 
    "xml_string", 
    "state" 
    ] 
} 

Działa świetnie, zwraca wynik oczekiwaną wartość:

{ 
    "took": 2, 
    "timed_out": false, 
    "_shards": { 
    "total": 5, 
    "successful": 5, 
    "failed": 0 
    }, 
    "hits": { 
    "total": 1, 
    "max_score": 0.41179964, 
    "hits": [ 
     { 
     "_index": "documents", 
     "_type": "document", 
     "_id": "11", 
     "_score": 0.41179964, 
     "fields": { 
      "xml_string": "Lukas bla bla bla", 
      "state": "new" 
     } 
     } 
    ] 
    } 
} 

Rozglądałem się wiele, ale nie jestem w stanie dowiedzieć się, które pola dopasowane zapytanie (jeśli był to xml_string LUB stan)

Odpowiedz

0

O ile mi wiadomo, nie ma funkcji informującej, które pole pasowało do zapytania.

Ale możesz użyć funkcji wyjaśnienia do debugowania zapytania. Trzeba tylko dodać do zapytania parametr pamięci &explain=true. Za pomocą tego parametru zobaczysz wyjaśnienie dla każdego pola, dlaczego znajduje się ono w zestawie wyników, i będziesz odgadywał, które pole pasuje do zapytania.

+1

Dziękuję za odpowiedź. bałem się, że ktoś napisze taką odpowiedź :) Poszukuję jakiegoś sposobu, przeszukuję wiele pól i wiem, które pole zwróciło wartość. Jest przeznaczony do autouzupełniania. W późniejszych wersjach powinien zwracać numer faktury lub nazwę dostawcy ... – gertruda

+0

Znalazłem rozwiązanie, dodałem je jako nową odpowiedź – gertruda

9

znalazłem rozwiązanie: Użyłem funkcji podświetlenia i to działa świetnie

To jest jak moja curl wygląda następująco:

curl -X GET 'http://xxxxx.com:9200/documents/document/_search?load=false&size=10&pretty' -d '{ 
    "query": { 
     "multi_match": { 
      "query": "123", 
      "fields": ["some_field", "another_field"] 
     } 
    }, 
    "highlight": { 
     "fields": { 
      "some_field": {}, 
      "another_field": {} 
     } 
    }, 
    "size": 10, 
    "fields": ["field","another_field"] 
}' 
+0

Idealny mój przyjaciel ... Używa, gdy dopasowane pole wymaga przetworzenia. – Siten

Powiązane problemy