一、term vector
1、term vector :獲取document中的某個field內的各個term的統計資訊
term information: term frequency in the field, term positions, start and end offsets, term payloads
term statistics: 設定term_statistics=true; total term frequency, 乙個term在所有document**現的頻率; document frequency,有多少document包含這個term
field statistics: document count,有多少document包含這個field; sum of document frequency,乙個field中所有term的df之和; sum of total term frequency,乙個field中的所有term的tf之和
2、index-time & query-time
"store" : true,
"analyzer" : "fulltext_analyzer"
},"fullname": }}
},"settings" : ,
"analysis": }}
}}3、實驗
(1)存入資料
put /my_index/my_type/1
put /my_index/my_type/2
(2)檢視term資訊
get /my_index/my_type/1/_termvectors------------>檢視某個field下term的統計資訊
(3)查詢結果說明
,"terms": ]},
"test": ,,]
}}}}
}4、手動指定doc的term vector---->手動指定要探查的term的資料情況,計算它在現有的所有doc中的一些統計資訊
get /my_index/my_type/_termvectors
,"fields" : ["text"],
"offsets" : true,
"payloads" : true,
"positions" : true,
"term_statistics" : true,
"field_statistics" : true
}5、multi term vector
get _mtermvectors,]
}二、highlight
1、highlight中的field,必須跟query中的field一一對齊的
2、例如:
分詞器測試:
get _analyze
get /blog_website/blogs/_search
},"highlight": }}
}3、三種highlight
(1)、plain highlight 預設值
(2)、posting highlight
效能比plain highlight要高,因為不需要重新對高亮文字進行分詞
對磁碟的消耗更少
將文字切割為句子,並且對句子進行高亮,效果更好}}
}}}(3)、fast vector highlight
對大field而言(大於1mb),效能更高}}
}}}4、強制使用某種highlight
get /blog_website/blogs/_search
},"highlight": }}
}5、總結
般情況下,用plain highlight也就足夠了,不需要做其他額外的設定
如果對高亮的效能要求很高,可以嘗試啟用posting highlight
如果field的值特別大,超過了1m,那麼可以用fast vector highlight
三、template
1、說明
2、例1:入門
get /blog_website/blogs/_search/template
}" : "}" --------->這個就是template} }
},"params" :
}底層翻譯為:
get /blog_website/blogs/_search }
}3、例2:tojson
2、tojson
get /blog_website/blogs/_search/template
}matchcondition}}}",---->將json物件生成json串
"params": }}
底層翻譯為:
get /blog_website/blogs/_search }
}4、例3:join
get /blog_website/blogs/_search/template
}titles}"}}
},"params":
}底層翻譯為:
get /blog_website/blogs/_search }
}5、例4:default value
get /blog_website/blogs/_search/template
}","lte": "}}20}"--------->預設值是20}}
}},"params":
}6、例5:conditional
es的config/scripts目錄下,預先儲存這個複雜的模板,字尾名是.mustache,檔名是conditonal
}" }
},"filter": } ------------------>條件中指定了line_no,才使用
"range": }
"gte": "}"
},}
} }
"lte": "}" } }
}} }}
}}get /my_index/my_type/_search/template
}7、使用場景:
比如說,一般在大型的團隊中,可能不同的人,都會想要執行一些類似的搜尋操作
這個時候,有一些負責底層運維的一些同學,就可以基於search template,封裝一些模板出來,然後是放在各個es程序的scripts目錄下的
其他的團隊,其實就不用各個團隊自己反覆手寫複雜的通用的查詢語句了,直接呼叫某個搜尋模板,傳入一些引數就好了
四、completion suggest
1、suggest,completion suggest,自動完成,搜尋推薦,搜尋提示 --> 自動完成,auto completion
2、completion 型別:es實現的時候,是非常高效能的,會構建不是倒排索引,也不是正拍索引,就是純的用於進行字首搜尋的一種特殊的資料結構,而且會全部放在記憶體中,所以auto completion進行的字首搜尋提示,效能是非常高的
"analyzer": "ik_max_word"}}
},"content": }}
}}搜尋:get /news_website/news/_search}}
}1、es會自動對映
put /my_index/my_type/1
3、根據field-type匹配對映模板
test_number,如果是個數字,我們希望預設就是integer型別的
test_string,如果是字串,我們希望預設是個text,這個沒問題,但是內建的field名字,叫做raw,不叫座keyword,型別還是keyword,保留500個字元
4、根據field-name匹配對映模板
六、geo_poing 地理位置資料型別
geo_point,就是乙個地理位置座標點,包含了乙個經度,乙個維度,經緯度,就可以唯一定位乙個地球上的座標}}
}}}2、寫入geo_point的3種方法
put my_index/my_type/1
}put my_index/my_type/2
put my_index/my_type/4
3、geo_bounding_box查詢:查詢某個矩形內的座標
get /my_index/my_type/_search
,"bottom_right": }}
}}七、geo_poing案例
1、背景:指定兩個地點,就要在東方明珠大廈和上海路組成的矩陣的範圍內,搜尋我想要的酒店
2、geo_bounding_box-------->矩形範圍內搜尋
"pin.location": ,
"bottom_right" : }}
}}}}
3、geo_polygon-------->多邊形範圍內搜尋
"pin.location": ,,]
}}}}
}}4、geo_distance-------->搜尋當前位置,方圓範圍內的資料
"distance": "200km",
"pin.location": }}
}}}5、基於地理位置進行聚合分析
舉例我0~100m有幾個酒店,100m~300m有幾個酒店,300m以上有幾個酒店
"lat": 40,
"lon": -70
},"distance_type": "sloppy_arc"--->sloppy_arc (the default), arc (most accurate) and plane (fastest)
"unit": "mi",
"ranges": [,,
]}}}
}
(10)ES使用mge和bulk批量操作
課程大綱 1mget 1 批量查詢的好處 就是一條一條的查詢,比如說要查詢100條資料,那麼就要傳送100次網路請求,這個開銷還是很大的 如果進行批量查詢的話,查詢100條資料,就只要傳送1次網路請求,網路請求的效能開銷縮減100倍 2 mget的語法 1 一條一條的查詢 get test inde...
python高階用法 Python高階用法
python高階用法 三元表示式 x 10 y 20 print x if x y else y x 100 y 20 print x if x y else y 列表推導式和生成器 列表推導式 print i for i in range 10 print i 2 for i in range 1...
華碩win10鍵盤失靈 Win10 高階用法彙總
電腦作為我們每天都離不開的工具,深入了解我們的作業系統,可以幫助我們更好地使用它,為工作帶來極大便利。今天給大家介紹一些 win10 系統自帶的超讚功能,方便大家日常工作使用。1 多桌面辦公 使用快捷鍵 win tab 開啟任務檢視,單擊右下角可以新建桌面。也可以使用 win ctrl d 來建立新...