2014-07-07 9 views
6

Jak korzystać z funkcji "sugeruj" w pyes? Nie można tego zrozumieć z powodu złej dokumentacji. Czy ktoś mógłby przedstawić przykład? Żadne z tego, co próbowałem, nie działa. W dokumentach wymienionych w zapytaniu, ale za pomocą:Jak używać "sugerować" w elastycznych odsłuchach?

query = Suggest(fields="fieldname") 
connectionobject.search(query=query) 
+1

Nie jasne, czy jest to możliwe, są otwarte problemy [tutaj] (https://github.com/aparo/pyes/issues/334) i [ tutaj] (https://github.com/aparo/pyes/issues/387) do tego. –

Odpowiedz

3

Oto mój kod, który działa idealnie.

from elasticsearch import Elasticsearch 
es = Elasticsearch() 

text = 'ra' 
suggDoc = { 
      "entity-suggest" : { 
       'text' : text, 
       "completion" : { 
        "field" : "suggest" 
       } 
      } 
     } 

res = es.suggest(body=suggDoc, index="auto_sugg", params=None) 
print(res) 

użyłem tego samego klienta wymieniony na miejscu elasticsearch here
i indeksowane dane elasticsearch indeksu za pomocą completion suggester z here

+0

Od wersji 5 punkt końcowy API "sugestia" jest przestarzały na korzyść punktu końcowego '' _search'' (patrz: https://www.elastic.co/guide/en/elasticsearch/reference/5.5/search-suggesters. html) –

2

Od wersji 5:

_suggest końcowym została zastąpiona korzystania z sugestii poprzez punkt końcowy _search. W wersji 5.0 punkt końcowy _search został zoptymalizowany pod kątem sugerowania tylko żądań wyszukiwania.

(od https://www.elastic.co/guide/en/elasticsearch/reference/5.5/search-suggesters.html)

lepszy sposób to zrobić przy użyciu Search API z suggest opcji

from elasticsearch import Elasticsearch 
es = Elasticsearch() 

text = 'ra' 
suggest_dictionary = {"my-entity-suggest" : { 
         'text' : text, 
         "completion" : { 
          "field" : "suggest" 
         } 
        } 
        } 

query_dictionary = {'suggest' : suggest_dictionary} 

res = es.search(
    index='auto_sugg', 
    doc_type='entity', 
    body=query_dictionary) 
print(res) 

Upewnij się, że indeksowane każdy dokument z suggest dziedzinie

sample_entity= { 
      'id' : 'test123', 
      'name': 'Ramtin Seraj', 
      'title' : 'XYZ',  
      "suggest" : { 
       "input": [ 'Ramtin', 'Seraj', 'XYZ'], 
       "output": "Ramtin Seraj", 
       "weight" : 34 # a prior weight 
      } 
      } 
+0

Znacznie lepiej, ponieważ sugeruje, że punkt końcowy jest przestarzały od wersji 5. –

Powiązane problemy