[TOC]
# 簡介
es是功能非常強大的全文搜索引擎,用它的目的是為了能快速的查詢你想要的數據
基本查詢: 利用es內置查詢條件進行查詢
組合查詢: 把多個基本查詢組合在一起的復合性查詢
過濾: 查詢同時,通過filter條件在不影響打分的情況下篩選出想要的數據
# 基本查詢
* term,terms查詢
* from,size
* 返回版本號`_version`
* match查詢
* 升序降序
* prefix前綴匹配查詢
* range范圍查詢
* wildcard通配符查詢
* fuzzy模糊查詢
* `more_like_this & more_like_this_field`查詢
# 簡單查詢
創建7個這樣的數據
~~~
POST /library/books/1
{
"title": "elasticsearch",
"price":"1",
"preview": "books-1",
"publish_date": "2015-02-06"
}
~~~
查看數據
~~~
GET /library/books/_mget
{
"ids": ["1","2","3","4","5","6","7"]
}
~~~
查看mapping
~~~
GET /library/_mapping
GET /shakespeare/_mapping
~~~
簡單查詢
~~~
# 指定index名以及type名的搜索
GET /library/books/_search?q=title:elasticsearch
~~~
返回值多條中,會有`_score`這個key,這個值越大就排在前面,這個就叫打分,es認為這個文檔比較有價值
~~~
# 指定index名沒有type名的搜索
GET /library/_search?q=title:mongo
~~~
~~~
# 既沒有index名也沒有type名的搜索
GET /_search?q=title:elasticsearch
~~~
# term查詢
查詢某個字段里有某個關鍵詞的文檔
~~~
GET /library/books/_search
{
"query": {
"term": {
"preview": "es"
}
}
}
~~~
查詢某個字段里有多個關鍵詞的文檔
`minimum_match`: 最小匹配集: 1.說明兩個關鍵詞里最少有一個, 2.說明文檔里這兩個關鍵詞都得存在
~~~
GET /library/books/_search
{
"query": {
"terms": {
"preview": ["es","php"],
"minimum_match": 1
}
}
}
~~~
控制查詢返回的數量
form和size
相當于mysql里的limit
from: 從哪個結果開始返回
size: 定義返回最大的結果數
~~~
GET /library/books/_search?q=title:elasticsearch
GET /library/books/_search
{
"from": 1,
"size": 2,
"query": {
"term": {
"title": "elasticsearch"
}
}
}
~~~
返回版本號`_version`
~~~
GET /library/books/_search
{
"version": true,
"query": {
"term": {
"preview": "es"
}
}
}
~~~
# match查詢
match查詢可以接收文字,數字日期等數據類型
match跟term區別是,match查詢的時候,elasticsearch會根據你給定的字段提供合適的分析器,而term查詢不會有分析器分析過程
~~~
GET /library/books/_search
{
"query": {
"match": {
"preview": "es"
}
}
}
GET /library/books/_search
{
"query": {
"match": {
"price": 3
}
}
}
~~~
通過`match_phrase`查詢
短語查詢,slop定義的是關鍵詞之間間隔多少未知單詞
~~~
GET /library/books/_search
{
"query": {
"match_phrase": {
"preview": {
"query": "books,es",
"slop": 3
}
}
}
}
~~~
`multi_match`查詢
可以指定多個字段
比如查詢title和preview這兩個字段里都包含Elasticsearch關鍵詞的文檔
~~~
GET /library/books/_search
{
"query": {
"multi_match": {
"query": "es",
"fields": ["title","preview"]
}
}
}
~~~
# field指定返回的字段
注意只能返回store為yes的字段
~~~
GET /library/books/_search
{
"fields": ["preview","title"],
"query": {
"match": {
"preview": "es"
}
}
}
~~~
# partial_fields控制加載字段
include表示包含
exclude表示排除
~~~
GET /library/books/_search
{
"partial_fields": {
"partial": {
"include": ["preview"],
"exclude": ["title,price"]
}
},
"query": {
"match_all": {}
}
}
~~~
還可以加通配符*
~~~
GET /library/books/_search
{
"partial_fields": {
"partial": {
"include": ["pr*"],
"exclude": ["tit*"]
}
},
"query": {
"match_all": {}
}
}
~~~
# sort排序
通過sort把結果排序
desc降序
asc升序
~~~
GET /library/books/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"price": {
"order": "desc"
}
}
]
}
~~~
# prefix前綴匹配查詢
prefix
~~~
GET /library/books/_search
{
"query": {
"prefix": {
"title": {
"value": "e"
}
}
}
}
~~~
# range控制范圍
range查詢:范圍查詢
有from,to,include_lower,include_upper,boots這些參數
include_lower: 是否包含范圍的左邊界,默認是true
include_upper: 是否包含范圍的右邊界,默認是true
~~~
GET /library/books/_search
{
"query": {
"range": {
"price": {
"from": "10",
"to": "20",
"include_lower": true,
"include_upper": false
}
}
}
}
~~~
# wildcard通配符查詢
允許你使用通配符`*`和?來進行查詢
`*`代表一個或多個字符
?僅代表一個字符
注意:這個查詢很影響性能
~~~
GET /library/books/_search
{
"query": {
"wildcard": {
"preview": "book*"
}
}
}
~~~
~~~
GET /library/books/_search
{
"query": {
"wildcard": {
"preview": "boo?s"
}
}
}
~~~
# fuzzy模糊查詢
value查詢的關鍵字
boost設置查詢的權值,默認為1.0
min_similarity:設置匹配的最小相似度,默認值是0.5,對于字符串取值為0-1(包括0和1),對于數值,取值可能大于1,對于日期型取值為1d,2d,1m這樣,1d就代表一天
prefix_length:指明區分詞項的共同前綴長度,默認是0
max_expansions:指明查詢中的詞項可擴展的數目,默認可無限大
~~~
GET /library/books/_search
{
"query": {
"fuzzy": {
"preview": "php"
}
}
}
~~~
~~~
GET /library/books/_search
{
"query": {
"fuzzy": {
"preview": {
"value": "php",
"min_similarity": 0.5
}
}
}
}
~~~
# fuzzy_like_this查詢與給定內容相似的所有文檔
查詢得到與給定內容相似的所有文檔
fields:字段組,默認是`_all`
like_text: 設置關鍵詞
ignore_tf:設置忽略詞項的頻次,默認是false
max_query_terns:指明在生成的查詢中查詢詞項的最大數目.默認是25
min_similarity:指明區分詞項最小的相似度,默認是0.5
prefix_length:指明區分詞項共同前綴的長度,默認是0
boost:設置權值,默認是1.0
analyze:指明用于分析給定內容的分析器
~~~
GET /library/books/_search
{
"query": {
"fuzzy_like_this": {
"fields": ["preview"],
"like_text": "php",
"min_similarity": 0.5,
"prefix_length": 0.2
}
}
}
~~~
# fuzzy_like_this_field查詢
只作用在一個字段里
其他與fuzzy_like_this功能一樣
~~~
GET /library/books/_search
{
"query": {
"fuzzy_like_this_field": {
"preview": {
"like_text": "php",
"min_similarity": 0.5,
"prefix_length": 0.2
}
}
}
}
~~~
# more_like_this查詢
fields:定義字段組,默認是`_all`
like_text:定義要查詢的關鍵詞
percent_terms_to_match: 該參數指明一個文檔必須匹配多大比例的詞項才能被視為相似,默認值是0.3,意思30%比例
min_term_freq:該參數指明在生成的查詢中查詢詞項的最大數目.默認為25
stop_words:該參數指明將被忽略的單詞集合
min_doc_freq:該參數指明詞項應至少在多個文檔中出現才不會被忽略.more是5
max_doc_freq:該參數指明出現詞項的最大數目,以避免詞項被忽略,默認是無窮大
min_word_len: 該參數指明單個單詞的最小長度,低于該值的單詞將被忽略,默認值是0
max_word_len: 該參數指明單個單詞的最大長度,高于該值的單詞將被忽略,默認是無限大
boost_terms: 該參數指明提升每個單詞的權重時使用的權值.默認是1
boost: 指明提升一個查詢的權值,默認是1.0
analyer:指定用于分析的分析器
~~~
GET /library/books/_search
{
"query": {
"more_like_this": {
"fields": ["preview"],
"like_text": "php",
"min_term_freq": 1,
"min_doc_freq": 1
}
}
}
~~~
# more_like_this_field查詢
只作用一個字段里
其他與more_like_this功能一樣
~~~
GET /library/books/_search
{
"query": {
"more_like_this_field": {
"preview": {
"like_text": "php",
"min_term_freq": 1,
"min_doc_freq": 1
}
}
}
}
~~~
- SQL
- 名詞
- mysql
- 初識mysql
- 備份和恢復
- 存儲引擎
- 數據表損壞和修復
- mysql工具
- 數據庫操作
- 增
- 刪
- 改
- 查
- 數據類型
- 整數類型
- 小數類型
- 日期時間類型
- 字符和文本型
- enum類型
- set類型
- 時間類型
- null與not null和null與空值''的區別
- 數據表操作
- 創建
- 索引
- 約束
- 表選項列表
- 表的其他語句
- 視圖
- sql增刪改查
- sql增
- sql刪
- sql改
- sql查
- sql語句練習
- 連接查詢和更新
- 常用sql語句集錦
- 函數
- 字符函數
- 數值運算符
- 比較運算符與函數
- 日期時間函數
- 信息函數
- 聚合函數
- 加密函數
- null函數
- 用戶權限管理
- 用戶管理
- 權限管理
- pdo
- 與pdo相關的幾個類
- 連接數據庫
- 使用
- pdo的錯誤處理
- pdo結果集對象
- pdo結果集對象常用方法
- pdo預處理
- 常用屬性
- mysql編程
- 事務
- 語句塊
- mysql中的變量
- 存儲函數
- 存儲過程
- 觸發器
- mysql優化
- 存儲引擎
- 字段類型
- 三范式和逆范式
- 索引
- 查詢緩存
- limit分頁優化
- 分區
- 介紹
- 分區算法
- list分區
- range范圍
- Hash哈希
- key鍵值
- 分區管理
- 特別注意
- 分表
- 數據碎片與維護
- innodb表壓縮
- 慢查詢
- explain執行計劃
- count和max,groupby優化
- 子查詢優化
- mysql鎖機制
- 介紹
- 演示
- 總結
- 樂觀鎖和悲觀鎖
- 扛得住的mysql
- 實例和故事
- 系統參數優化
- mysql體系結構
- mysql基準測試
- 索引
- mysql的復制
- win配置MySQL主從
- mysql5.7新特性
- 常見問題
- general log
- 忘記密碼
- uodo log與redo log
- 事務隔離級別
- mysql8密碼登錄
- explain
- 高效的Tree表
- on delete cascade 總結
- mongod
- 簡介
- 集合文檔操作語句
- 增刪改查
- 索引
- 數據導入和導出
- 主從復制
- php7操作mongod
- 權限管理
- redis
- redis簡介
- 3.2版本配置文件
- 3.0版本配置文件
- 2.8版本配置文件
- 配置文件總結
- 外網連接
- 持久化
- RDB備份方式保存數據
- AOF備份方式保存數據
- 總結
- win安裝redis和sentinel部署
- 事務
- Sentinel模式配置
- 分布式鎖
- 管道
- php中redis代碼
- 發布訂閱
- slowlog
- Redis4.0
- scan和keys
- elasticsearch
- 配置說明
- 啟動
- kibana
- kibana下載
- kibana配置文件
- kibana常用功能
- 常用術語
- Beats
- Beats簡介
- Filebeat
- Packetbeat
- Logstash
- 配置
- elasticsearch架構
- es1.7
- head和bigdesk插件
- 插件大全
- 倒排索引
- 單模式下API增刪改查
- mget獲取多個文檔
- 批量操作bulk
- 版本控制
- Mapping映射
- 基本查詢
- Filter過濾
- 組合查詢
- es配置文件
- es集群優化和管理
- logstash
- kibana
- es5.2
- 安裝
- 沖突處理
- 數據備份
- 缺陷不足
- 集群管理api
- 分布式事務
- CAP理論
- BASE模型
- 兩階段提交(2PC)
- TCC (Try-Confirm-Cancle)
- 異步確保型
- 最大努力通知型
- 總結