如何在弹性搜索中使用"建议"?

Rol*_*ndo 7 python elasticsearch

如何在pyes中使用"建议"功能?由于文档很差,似乎无法弄明白.有人能提供一个有效的例子吗?我试过的一切似乎都没有用.在其查询下列出的文档中,但使用:

query = Suggest(fields="fieldname")
connectionobject.search(query=query)
Run Code Online (Sandbox Code Playgroud)

Ram*_*raj 6

从第5版开始:

_suggest端点已被弃用,转而使用通过_search端点建议.在5.0中,_search端点已经过优化,仅用于建议搜索请求.

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

更好的方法是使用带有suggest选项的搜索API

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)
Run Code Online (Sandbox Code Playgroud)

确保已使用suggest字段为每个文档编制索引

sample_entity= {
            'id' : 'test123',
            'name': 'Ramtin Seraj',
            'title' : 'XYZ',    
            "suggest" : {
                "input": [ 'Ramtin', 'Seraj', 'XYZ'],
                "output": "Ramtin Seraj",
                "weight" : 34   # a prior weight 
            }
          }
Run Code Online (Sandbox Code Playgroud)


Sha*_*ams 5

这是我运行完美的代码。

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)
Run Code Online (Sandbox Code Playgroud)

我在这里使用了在 elasticsearch 站点上提到的相同客户端,
我使用completion suggesterfrom here对 elasticsearch 索引中的数据进行了索引