白话Elasticsearch07- 深度探秘搜索技术之基于term+bool实现的multiword搜索底层剖析
生活随笔
收集整理的這篇文章主要介紹了
白话Elasticsearch07- 深度探秘搜索技术之基于term+bool实现的multiword搜索底层剖析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 概述
- 普通match轉換為term+should
- and match轉換為term+must
- minimum_should_match如何轉換
概述
繼續跟中華石杉老師學習ES,第七篇
課程地址: https://www.roncoo.com/view/55
普通match轉換為term+should
上一篇博文中我們 使用了 搜索標題中包含java或elasticsearch的blog 這個例子
GET /forum/article/_search {"query": {"match": {"title": "java elasticsearch"}} }我們通過分詞器查看,可以知道 es是把 java和elasticsearch放到了倒排索引中,
那es是如何查詢的呢? 我們通過 profile
GET /forum/article/_search {"profile": "true", "query": {"match": {"title": "java elasticsearch"}} }或者kibana提供的
使用諸如上面的match query進行多值搜索的時候,es會在底層自動將這個match query轉換為bool的語法 . bool should,指定多個搜索詞,同時使用term query
等同于
GET /forum/_search {"query": {"bool": {"should": [{"term": {"title": "java"}},{"term": {"title": "elasticsearch"}}]}} }and match轉換為term+must
搜索標題中包含java和elasticsearch的blog 中的
GET /forum/_search {"query": {"match": {"title": {"query": "java elasticsearch","operator": "and"}}} }and match轉換為term+must
等同于
GET /forum/_search {"query": {"bool": {"must": [{"term": {"title": "java"}},{"term": {"title": "elasticsearch"}}]}} }minimum_should_match如何轉換
搜索包含java,elasticsearch,spark,hadoop,4個關鍵字中,至少3個的blog
GET /forum/_search {"query": {"match": {"title": {"query": "java elasticsearch hadoop spark","minimum_should_match": 3}}} }等同于
GET /forum/_search {"query": {"bool": {"should": [{"term": {"title": "java"}},{"term": {"title": "elasticsearch"}},{"term": {"title": "hadoop"}},{"term": {"title": "spark"}}],"minimum_should_match": 3}} }總結
以上是生活随笔為你收集整理的白话Elasticsearch07- 深度探秘搜索技术之基于term+bool实现的multiword搜索底层剖析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 白话Elasticsearch06- 深
- 下一篇: 白话Elasticsearch08-深度