如何使用"建议"在elasticsearch pyes?

时间:2014-07-07 02:31:32

标签: python elasticsearch

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

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

2 个答案:

答案 0 :(得分: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)

确保已使用suggest字段

为每个文档编制索引
sample_entity= {
            'id' : 'test123',
            'name': 'Ramtin Seraj',
            'title' : 'XYZ',    
            "suggest" : {
                "input": [ 'Ramtin', 'Seraj', 'XYZ'],
                "output": "Ramtin Seraj",
                "weight" : 34   # a prior weight 
            }
          }

答案 1 :(得分:3)

这是我的代码完美运行。

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)

我使用了elasticsearch网站here上提到的同一个客户端 我使用here

中的completion suggester将弹性搜索索引中的数据编入索引