您好,登錄后才能下訂單哦!
elasticsearch的使用示例分析,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
Elasticsearch 是一個基于Lucene的搜索服務器。它提供了一個分布式多用戶能力的全文搜索引擎,基于RESTful web接口。
一、基本概念:
1.索引(index)
是Elasticsearch對邏輯數據的邏輯存儲,所以它可以分為更小的部分。可以把索引看成關系型數據庫的表,索引的結構是為快速有效的全文索引準備的,特別是它不存儲原始值。Elasticsearch可以把索引存放在一臺機器或者分散在多臺服務器上,每個索引有一或多個分片(shard),每個 分片可以有多個副本(replica)。
2.文檔(document)
存儲在Elasticsearch中的主要實體叫文檔(document)。用關系型數據庫來類比的話,一個文檔相當于數據庫 表中的一行記錄。
3.Mapping
Mapping是對類型中的文檔中的每個字段進行預先定義數據類型等功能,如定義文檔中的某個字段為整形,使用什么分析器,是否可搜索等,一個索引可以定義多個mapping。
二、基本操作:
1.新增索引并設置 mapping
PUT請求 http://ip:9200/索引名稱/body體如下{ "settings": {"number_of_shards": 3,"number_of_replicas": 1}, "mappings": { "properties": { "video_like": {"type": "long"}, "video_date": {"type": "date","format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"}, "video_title": {"analyzer" : "ik_smart","type": "text"}, "video_comment": {"type": "long"}, "share_conut": {"type": "long"}, "video_img_url": {"type": "text"}, "video_url": {"type": "text"}, "type_id": {"type": "long"}, "updata_time": {"type": "date","format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"}, "user_id":{"type":"long"} } }}
number_of_replicas 是數據備份數,如果只有一臺機器,設置為0,number_of_shards 是數據分片數,默認為5,有時候設置為3。
2.對已存在的索引新增 mapping 字段
PUT請求 http://ip:9200/index/_mapping
{
"properties":{
"name":{
"type":"text"
}
}
}
index為你索引庫的名稱。body 里寫的是要新增的字段名稱和字段類型,上面的例子是新增 name 字段,類型為 text 。
3.判斷某個字段是否為空
http://ip:9200/index/_search
{
"query": {
"bool": {
"must_not": {
"exists": {
"field": "label"
}
}
}
}
}
向es插入數據時,如果某個字段為空,我就沒有對該字段寫入值,所以判斷某個字段是否為空值,直接判斷這個字段是否存在即可。用 exists 判斷某個字段是否存在,這個例子是判斷 label 的值是否為空
4.must 多個條件
http://ip:9200/index/_search
{
"query": {
"bool": {
"must": [
{
"range": {
"video_date": {
"gte": "now-24h+8h",
"lte": "now+8h"
}
}
},
{
"exists": {
"field": "label"
}
}
]
}
}
}
must 多個條件時,對應的參數類型是列表。上面的例子: 查找必須是video_date 在某個時間范圍,并且 label 字段存在的結果。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。