比方說,我有一個doc格式是這樣的:Can ElasticSearch在第一次匹配搜索時會停止嗎?
doC#1
A: 1
B: 2
C: 3
doC#2
A: 4
B: 1
C: 8
因此,用戶輸入將是1。我對A,B和C的multi_match查詢這工作得很好。我想把A看作主要的,所以我給了它一個提升(目前是5)。這工作正常,所有文檔與A:1上升到頂部。
但是,鑑於上述兩個文檔,輸入「1」將返回兩個文檔。我希望搜索工作的方式是將A作爲優先領域,如果我在那裏找到價值,我想忽略其他兩個領域。
如果找不到A:1,那麼我想搜索B & C作爲後備。
elasticsearch是否有這樣的機制?
這裏是輸入的情況下= 1個
- 回報所有A:1個文件...如果只有一個,然後做
- 如果沒有答:1個文檔,或多個A:1個文檔,還包括B:1和C:1文檔
你需要從Elasticsearch的角度思考這個問題。在ES中控制這些東西都是關於得分的。您可以使用'「size」:1'來僅返回一個文檔。您可以提高特定文件的質量,以便您可以決定先於他人。也許你可以這樣做。但是,如果考慮一下這種使用情況,像編程方法(如果其他情況下)不會與ES一起工作,就像@imotov在他的答案中提到的那樣。 –