我是ES查詢的新手。我試圖根據可以匹配任何值的密鑰而不是一個特定值來獲得結果。例如:密鑰foo
可以是bar, baz
之一。我試過這與數組,並應該但結束了錯誤的結果或異常。什麼是ES中OR情況的正確語法。我正在使用ES 5.6。*彈性搜索 - 搜索查詢以匹配特定鍵的任何一個值
回答
有很多方法可以做到這一點。
取決於您所使用的分析儀,你可以非常不喜歡這樣寫道:
GET /test/_search
{
"query": {
"match": {
"foo": "bar, baz"
}
}
}
演示什麼分析,以(默認爲5.6)
GET /test/_analyze
{
"field": "foo",
"text": [
"bar, baz"
]
}
1.4.3這些令牌:
{
"tokens": [
{
"token": "bar",
"start_offset": 0,
"end_offset": 3,
"type": "<ALPHANUM>",
"position": 0
},
{
"token": "baz",
"start_offset": 5,
"end_offset": 8,
"type": "<ALPHANUM>",
"position": 1
}
]
}
在上面的例子中,使用「bar,baz」或「bar baz」將等於搜索「bar」和「baz」。
您還可以將它們分組在查詢中是這樣的:
GET /test/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"foo": "bar"
}
},
{
"match": {
"foo": "baz"
}
}
]
}
}
}
上述會給你一個得分的查詢,需要兩個酒吧和巴茲在查詢文檔的匹配。
您也可以將「must」替換爲「filter」,「should」或「must_not」。 「過濾器」將不計分,應該會從與運算的查詢,可切換到或運算查詢(你也可以指定或最低金額),或使用「must_not」
反向查詢除此之外還有更多的方法,但這應該讓你開始正確的軌道。
A「應該」的例子要求只投中兩個術語之一,因爲這是你原來的問題:
GET /test/_search
{
"query": {
"bool": {
"minimum_should_match": 1,
"should": [
{
"match": {
"foo": "bar"
}
},
{
"match": {
"foo": "baz"
}
}
]
}
}
}
好吧讓我更清楚我的問題。我需要總共25個結果。如果ES中總共有50條消息。而20有「價值」「富」的價值,那麼它應該採取休息5消息有價值「巴茲」。 –
我提供的底部片段將爲您提供任何具有「酒吧」或「baz」的項目的結果,但不限於第一個X數量的一個,然後是其他的剩餘部分,如果我正確解釋您的評論。 – Miek
您需要使用bool
條件與should
和match
或match_phrase
合併(你會喜歡match_phrase只要您確切知道您要搜索的內容)
GET local-signaler/_search
{
"query": {
"bool" : {
"should" : [
{ "match_phrase" : { "foo" : "bar" } },
{ "match_phrase" : { "foo" : "baz" } }
],
"minimum_should_match" : 1
}
}
}
- 1. 彈性搜索 - 或查詢不匹配
- 2. 彈性搜索管道搜索查詢
- 3. 彈性搜索我如何查詢多個匹配或功能
- 4. 查詢彈性搜索
- 5. 彈性搜索has_child查詢
- 6. 彈性搜索查詢
- 7. 彈性搜索java特定配置
- 8. 查詢搜索URL匹配
- 9. 彈性數據彈性搜索 - 查詢 - 全文搜索
- 10. 彈性搜索查詢 - 彈性搜索1.7
- 11. 彈性搜索查詢最大值AGGS
- 12. 彈性搜索 - 查詢價值觀
- 13. 彈性搜索:查詢不搜索數值
- 14. 彈性數據彈性搜索 - 查詢
- 15. 彈性搜索 - 在單個字段中搜索多個查詢
- 16. 彈性搜索:首先匹配另一個匹配
- 17. ngram通配符搜索彈性搜索
- 18. 彈性搜索通配符搜索
- 19. 彈性搜索中的完全匹配搜索不起作用
- 20. 彈性搜索的完全匹配
- 21. 彈性搜索查詢中的完全匹配
- 22. 彈性搜索:能夠搜索'n1'並匹配'N°1'
- 23. 彈性搜索 - 多重匹配 - 詞組搜索
- 24. 彈性搜索Wilcard搜索或部分匹配
- 25. 分組match_phrase搜索按匹配文本導致彈性搜索
- 26. 搜索兩個表以獲得特定的匹配值
- 27. 彈性搜索中查詢匹配沒有得分
- 28. 類型不匹配彈性搜索
- 29. 節點彈性搜索嚴格匹配
- 30. 彈性搜索將不匹配數組
您是否解決了此問題? – Miek