我試圖用彈性搜索引擎對mongodb數據庫進行全文搜索,但遇到了一個問題:無論我提供什麼搜索術語(或者如果使用query1或query2),引擎總是返回相同的結果。我認爲問題在於我提出請求的方式,但我不知道如何解決它。用Python請求無法正常工作查詢ElasticSearch
下面是代碼:
def search(search_term):
query1 = {
"fuzzy" : {
"art_text" : {
"value" : search_term,
"boost" : 1.0,
"min_similarity" : 0.5,
"prefix_length" : 0
}
},
"filter": {
"range" : {
"published": {
"from" : "20130409T000000",
"to": "20130410T235959"
}
}
}
}
query2 = {
"match_phrase": { "art_text": search_term }
}
es_query = json.dumps(query1)
uri = 'http://localhost:9200/newsidx/_search'
r = requests.get(uri, params=es_query)
results = json.loads(r.text)
data = [res['_source']['api_id'] for res in results['hits']['hits'] ]
print "results: %d" % len(data)
pprint(data)
只是目測這個快速...貴「模糊」的條款需要包裹「查詢」裏面?所以結構會變成「查詢」:{「fuzzy」:{...}},「filter」:{...}。你可以發佈你的請求的結果,所以我們可以嘗試看看有沒有什麼明顯的。 – Phil 2013-04-11 13:37:05
無論我提供什麼search_term,該請求都會返回10個項目。我不知道我做錯了什麼。 – Rod0n 2013-04-11 19:01:39
數據是真實的嗎?文件是有效的文件,還是其他的?你有沒有嘗試過一個簡單的uri搜索,指定文檔類型和搜索參數?例如:curl -XGET'http:// localhost:9200/newsidx/some_type/_search?q = art_text:hello'。或者,也許是搜索不是art_text字段的標籤的東西。只是想幫助你縮小範圍 – Phil 2013-04-11 22:39:08