我正嘗試在包含3M文檔的Elasticsearch索引上使用過濾後的查詢,但似乎無法像我期望的那樣使其工作。Elasticsearch過濾的查詢結果令人困惑
爲了詳細說明,我的查詢看起來像這樣(我的指標是大學課程信息):
{
"query":{
"filtered":{
"query":{
"match_phrase_prefix":{
"course_abbreviation":"CS 3"
}
},
"filter":{
"term":{
"department_id":49599
}
}
}
}
}
這不會產生任何結果。但是,如果我給出一個完整的「course_abbreviation」(例如:CS 301),我會得到一個結果。
爲了進一步添加到我的困惑,如果我做了以下查詢:
{
"query":{
"match_phrase_prefix":{
"course_abbreviation": "CS 3"
}
}
}
我拿到那有我需要的部門標識(以及與其他department_ids文檔)多個文檔,並且還搭配course_abbreviations如「CS 301」,「CS 322」,「CS 365」等。
我錯了,期望我的篩選查詢會產生與非篩選查詢相同的文檔sans文檔與其他department_ids?
起初,我想你可能需要一個關鍵字分析儀適用於這一領域 – Tim
所以,如果我用一個「關鍵詞」分析(用小寫的過濾器沿 - [開始與 - 詞組匹配](http://www.elasticsearch.org/blog/starts-with-phrase-matching/)),我會得到更好的結果。然而,當我提供一個department_id過濾器時,我還想要一個匹配短語查詢「3」給我300個關卡課程;這在我使用這種類型的方法時不起作用。謝謝。 – bpaulsen1980
在過去,我用布爾或過濾器做這種事情。 http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-bool-filter.html/ http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/ query-dsl-and-filter.html ......很多方法 – Tim