這裏新增了彈性搜索並試圖更好地理解這些查詢之間的區別。據我所知,term
匹配一個單詞(匹配工作需要小寫),並且match phrase
和query string
都匹配一個文本字符串。彈性搜索:「術語」,「匹配短語」和「查詢字符串」之間的區別
回答
term
查詢匹配單個詞條,因爲它是:值爲未分析。 所以,它不一定要小寫,這取決於你的索引。如果分析儀的查詢字段定義
{
"query": {
"term" : { "user" : "bennett" }
}
}
match_phrase
查詢將分析輸入和查找:
如果在索引時間提供Bennett
並沒有分析的價值,下面的查詢將不會返回任何東西符合下列規定 - 文件:
- 所有條款必須出現在場上
- 它們必須具有相同的順序作爲輸入值
例如,如果您索引以下文件(使用standard
分析儀進行現場foo
):
{ "foo":"I just said hello world" }
{ "foo":"Hello world" }
{ "foo":"World Hello" }
這match_phrase
查詢僅會返回第一個和第二個文檔:
{
"query": {
"match_phrase": {
"foo": "Hello World"
}
}
}
query_string
查詢搜索,默認情況下,一個_all字段包含幾個文本字段的文本一次。最重要的是,它被解析並支持一些運算符(AND/OR ...),通配符等(請參閱related syntax)。
作爲match_phrase
查詢,根據在查詢字段中設置的分析器分析輸入。
與match_phrase
不同的是,分析後得到的術語不必是相同的順序,除非用戶在輸入周圍使用了引號。
例如,使用相同的文件和以前一樣,這個查詢將返回所有的文件:
{
"query": {
"query_string": {
"query": "hello World"
}
}
}
但此查詢將返回相同的2個文件爲match_phrase
查詢:
{
"query": {
"query_string": {
"query": "\"Hello World\""
}
}
}
關於這些查詢的不同選項還有很多要說的,請查看相關文檔:
希望這是非常明顯的,它會有所幫助。
我覺得有一個人肯定要關注對於他們之間的差異,以局部搜索 這是我分析的默認「標準分析器」: -
假設,我們有數據: -
{ 「名」:「你好」}
現在如果我們想用ell進行部分搜索呢?
期限查詢或匹配查詢
{"term":{"name": "*ell*" }
都不行,返回留意。
{"term":{"name": "*zz* *ell*" }
將無法正常工作,返回注意。
結論 - 期限或比賽不能在所有
通配符查詢做局部搜索: -
{"wildcard":{"name": "*ell*" }
將工作給予結果{ 「名」:「你好「}
{"wildcard":{"name": "*zz* *ell*" }
不行,返回n otot。
結論 - 通配符是能夠做到的部分搜索一個令牌只有
QUERY_STRING: -
{"query_string": {"default_field": "name","query": "*ell*"}
將工作給予結果{ 「名」:「你好」}
{"query_string": {"default_field": "name","query": "*zz* *ell*" }
將工作給出結果{「name」:「你好」}。
結論 - QUERY_STRING能夠與兩個令牌搜索給出
- 在這裏>標記是ELL和ZZ
- 1. 彈性搜索,匹配一個字符串上的多個術語
- 2. 搜索和匹配Solr的短語
- 3. Lucene術語和查詢之間的區別?
- 4. 在彈性搜索輪胎上的精確短語匹配
- 5. 彈性搜索 - 使用Java的短語匹配
- 6. 搜索短語的串查詢
- 7. 彈性搜索短語匹配精確無analizinig
- 8. 冬眠搜索通配短語查詢
- 9. Solr:匹配查詢字符串中包含的短語
- 10. VB.net搜索字符串中的術語?
- 11. 匹配大量的字符串/短語
- 12. Solr:索引短語短於查詢時的短語搜索
- 13. 彈性搜索 - 或查詢不匹配
- 14. Sitecore術語查詢和全文搜索
- 15. 使用術語過濾器彈性搜索過濾查詢
- 16. 彈性搜索QUERY_STRING包括術語不查詢
- 17. 字符串匹配用浮子短語
- 18. Java:在字符串中匹配短語
- 19. 在字符串中查找匹配的短語和單詞python
- 20. 彈性搜索術語過濾器的連字符問題
- 21. JavaScript搜索字符串短語
- 22. 彈性搜索多個術語
- 23. android術語之間的區別?
- 24. 數據庫術語之間的區別
- 25. ElasticSearch短語前綴搜索 - 如何獲得匹配的短語?
- 26. 使用相同的查詢字符串在多個字段上匹配和匹配 - 彈性搜索(嵌套)
- 27. 彈性搜索陣列元素的查詢字符串搜索
- 28. 瞭解字符匹配和標記匹配之間的區別
- 29. 休眠搜索:精確短語匹配
- 30. PocketSphinx關鍵短語和語法之間的區別
大,精彩,詳盡的解釋!我唯一不清楚的是分析結果究竟是... – blee908 2014-09-23 20:30:29
不客氣:)分析儀處理文本以獲取最終索引/搜索的術語。閱讀這些[ElasticSearch權威指南的頁面](http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_exact_values_vs_full_text.html),因爲這是一個非常重要的概念。 – ThomasC 2014-09-23 20:50:04
是來自SQL,這裏有很多新的想法。查詢和過濾器之間的區別,精確值vs全文本,JSON搜索對象,以及彈性搜索執行搜索的方式。這麼多!感謝您的資源! – blee908 2014-09-23 21:03:36