日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Elasticsearch之基本操作

發(fā)布時間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Elasticsearch之基本操作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
摘要: 本文簡單介紹了elasticsearch的HTTP API中的插入、刪除、更新、查找、搜索功能。

elasticsearch是一個是開源的(Apache2協(xié)議),分布式的,RESTful的,構(gòu)建在Apache Lucene之上的的搜索引擎。

它有很多特點例如Schema Free,Document Oriented。它是#nosql的,基于JSON,同時支持多種API,包括HTTP, thrift, memcached。支持HTTP,是比較爽的一點,因為基本上所有的應(yīng)用都可以用ES了,頁面上的js腳本都可以去查詢。

安裝

啟動和安裝特別簡單,在ES下載頁面下載zip或者tar包后,解壓,然后到elasticsearch的目錄下,運行下面的命令就可以了。

bin/elasticsearch -f

搭建集群也非常簡單,在同網(wǎng)段的機器上,啟動es后,它們會自動組建成一個集群,并完成數(shù)據(jù)的分布式存儲,查詢時也會按照分布式的方式去查找。

好了恭喜你,現(xiàn)在你已經(jīng)可以搭建ES單機版和ES集群了,一切都這么簡單。

下面我們就來看一下ES的HTTP的API的插入、刪除、更新、查找、搜索的功能吧,(ES安裝在ubuntu server 64位 12.04LTS)。

插入

先來一個簡單的官方例子,插入的參數(shù)為-XPUT,插入一條記錄。

$ curl -XPUT 'http://localhost:9200/twitter/tweet/1' -d '{"user" : "kimchy","post_date" : "2009-11-15T14:12:12","message" : "trying out Elastic Search" }'

執(zhí)行結(jié)果如下圖所示,綠色框內(nèi)的內(nèi)容是ES返回的執(zhí)行結(jié)果:

andrew@ubuntu:~$ curl -XPUT 'http://localhost:9200/twitter/tweet/1' -d '{ > "user" : "kimchy", > "post_date" : "2009-11-15T14:12:12", > "message" : "trying out Elastic Search" > }' {"ok":true,"_index":"twitter","_type":"tweet","_id":"1","_version":6}andrew@ubuntu:~$

從上面的這個例子中,可以看出ES的http的服務(wù)的默認端口9200,后面的/twitter/tweet/1是這條記錄的索引部分。

這也就體現(xiàn)了它的RESTful風(fēng)格,所有的記錄都是通過URI確定。這三級目錄分布對應(yīng)了_index,_type,?_id(綠框內(nèi)可以看出來)。實際上ES上存放的所有的記錄都只能通過三級目錄的方式找到,不能多也不能少。

_id字段可以是數(shù)字也可以是字符串。在執(zhí)行上面的命令時ES會自動創(chuàng)建這些索引。-d后面跟上了要插入的json格式的記錄。

-XPUT表明這是插入一條數(shù)據(jù),ES中叫創(chuàng)建一個索引。ES返回的結(jié)果中,一個_version字段,表明了當(dāng)前記錄的版本號,當(dāng)你想這個索引重新put一條記錄時,版本號會自動加一。

刪除

刪除的http請求參數(shù)為-XDELETE,通過下面的命令可以刪除這條記錄:

curl -XDELETE 'http://localhost:9200/twitter/tweet/1'

刪除這條記錄的時候,_verison也會自動加一的。

查詢

創(chuàng)建了一個索引后,可以通過下面的方式查詢(參數(shù)-XGET)出來:

curl -XGET 'http://localhost:9200/twitter/tweet/1'

執(zhí)行上面的查詢命令,可以等到下面的結(jié)果:

andrew@ubuntu:~$ curl -XGET 'http://localhost:9200/twitter/tweet/1' {"_index":"twitter","_type":"tweet","_id":"1","_version":5,"exists":true, "_source" : {"user" : "kimchy","post_date" : "2009-11-15T14:12:12","message" : "trying out Elastic Search" }}andrew@ubuntu:~$

exists表示是否有查詢結(jié)果,_source字段是查詢到的記錄。

查詢的時候,可以將_type設(shè)置成為_all,ES就會返回在_index下所有type中,第一個匹配_id的記錄。

還可以通過參數(shù)對返回結(jié)果繼續(xù)控制,例如:用fields選取返回的字段,用pretty控制返回的json格式是否更閱讀友好。format=yaml可以設(shè)置輸入格式為YAML。 下面是兩個例子

curl -XGET 'http://localhost:9200/twitter/tweet/1?fields=message,user&pretty=true' curl -XGET 'http://localhost:9200/twitter/tweet/1?fields=message,user&format=yaml'

當(dāng)然ES還支持一次查詢多組記錄,即multi get,在URI中是使用關(guān)鍵字_mget,具體可以參考ES的文檔multi get。

更新

ES同樣支持更新,但是更新的方式是通過一個提供的腳本進行的。ES的做法是,通過index找到相應(yīng)的存放記錄的節(jié)點,然后執(zhí)行腳本,執(zhí)行完之后,返回新的索引。實際上執(zhí)行的是一個get和reindex的過程,在這個過程中,通過versioning來控制沒有其它的更新操作(這個功能是0.19后可用的)。具體實現(xiàn)的原理應(yīng)該和elasticsearch Versioning相關(guān)。

get,reindex的含義是,ES先取出這條記錄,然后根據(jù)新數(shù)據(jù)生成新記錄,然后在把新記錄放回到ES中(并不會覆蓋老的記錄)。

首先創(chuàng)建一條記錄

$ curl -XPUT localhost:9200/test/type1/1 -d '{"counter" : 1,"tags" : ["red"] }'

將counter的值加4

$ curl -XPOST 'localhost:9200/test/type1/1/_update' -d '{"script" : "ctx._source.counter += count","params" : {"count" : 4} }'

也可以添加一個tag的值

$ curl -XPOST 'localhost:9200/test/type1/1/_update' -d '{"script" : "ctx._source.tags += tag","params" : {"tag" : "blue"} }'

現(xiàn)在還支持upsert功能,即在更新的時候,如果記錄沒有這個key,則插入這個key,下面是一個例子,如果沒有counter字段,則插入該字段:

$ curl -XPOST 'localhost:9200/test/type1/1/_update' -d '{"script" : "ctx._source.counter += count","params" : {"count" : 4},"upsert" : {"counter" : 1} }'

關(guān)于update還有其它很多功能,可以參考ES的API update

搜索

elasticsearch的名字里面有一個search,那么主要功能也是search了。

es的search有兩種形式,一是通過URI,二是通過Requst Body。通過URI查詢,即將查詢的語句放入到請求的url中,例如:

curl -XGET 'http://localhost:9200/twitter/tweet/_search?q=user:kimchy'

第二種方式,即在查詢的請求中加入一個doc

$ curl -XGET 'http://localhost:9200/twitter/tweet/_search' -d '{"query" : {"term" : { "user" : "kimchy" }} }'

query body的定義可以查看query DSL?另外兩種查詢方式都可以帶參數(shù),參數(shù)的含義參考URI Request和Request Body。

ES的搜索功能是可以跨index和type的,例如下面這幾條命令

curl -XGET 'http://localhost:9200/twitter/_search?q=user:kimchy' curl -XGET 'http://localhost:9200/twitter/tweet,user/_search?q=user:kimchy' curl -XGET 'http://localhost:9200/kimchy,elasticsearch/tweet/_search?q=tag:wow' curl -XGET 'http://localhost:9200/_all/tweet/\_search?q=tag:wow' curl -XGET 'http://localhost:9200/\_search?q=tag:wow'

第一條是在所有的twitter這個index下的所有type中查找,第二條是在tweet,user這兩個type中查找,第三條是在kimchy,elasticsearch這兩個index的tweet這個type中查找,第四條使用了_all關(guān)鍵字,是在所有的index的tweet的type中查找,第五條更暴力,在所有的index和type中查找。

查找還有其它的很多選項,sort,高亮,選取返回記錄的域Fields,還可以對返回的域使用一個腳本進行計算script Fields,或者對返回結(jié)果繼續(xù)統(tǒng)計Facets,Facets的內(nèi)容比較多,它支持關(guān)鍵詞統(tǒng)計,范圍內(nèi)統(tǒng)計,直方圖式統(tǒng)計,日期的直方圖式統(tǒng)計,過濾,查詢,還有記錄地理位置距離的統(tǒng)計geo distance。 支持名字過濾Named Filters。 定義搜索類型Search Type 。例如什么Query And Fetch,Query Then Fetch。 索引加速的功能Index Boost,可以讓某一個索引的權(quán)重大于另外一個。 保持上次檢索的環(huán)境了結(jié)果Scroll。保留每一個命中的score值Explain。 設(shè)置命中的min_score。保留版本號Version。

Search的參數(shù)很多,我也沒有一一看,不過果然是名字里面有個search,對檢索的各種場景都有支持。

當(dāng)然還支持多個查詢multi search,例如下面這個例子

$ cat requests {"index" : "test"} {"query" : {"match_all" : {}}, "from" : 0, "size" : 10} {"index" : "test", "search_type" : "count"} {"query" : {"match_all" : {}}} {} {"query" : {"match_all" : {}}}$ curl -XGET localhost:9200/_msearch --data-binary @requests; echo

小結(jié)

以上就是elasticsearch的基本的幾個功能了。當(dāng)然它還有其它的很多功能,大家可以上http://www.elasticsearch.org去查看。

ES是基于Lucene的,有很多概念是直接來自于它,所有要想深入學(xué)習(xí)ES,還得有點Lucene的基礎(chǔ)。

總的,感覺elasticsearch是一個比較強大的工具,而且對社交網(wǎng)絡(luò)的支持比較好,而且使用方便,配置簡單,就不知道穩(wěn)定性如何了。

下面是兩篇不錯的文章,大家也可以借鑒一下:

  • http://blog.csdn.net/laigood12345/article/details/7421173
  • http://www.qwolf.com/?p=1387

還有elasticsearch的中文站點http://www.elasticsearch.cn/,不過這個網(wǎng)站還在構(gòu)建中,翻譯工作也才剛剛開始,大家就期盼早點完成。


from:?http://liuhongjiang.github.io/tech/blog/2013/01/11/es/

總結(jié)

以上是生活随笔為你收集整理的Elasticsearch之基本操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91免费毛片 | 亚洲三级成人 | av新天堂 | 无码精品黑人一区二区三区 | 福利视频第一页 | 日本一区二区久久 | 中文字幕免费视频 | 免费黄色入口 | 欧美精品久久天天躁 | 久久精品日韩 | 国产对白自拍 | 亚洲精品乱码久久久久久麻豆不卡 | 国产永久在线 | 国产成人宗合 | 性生活视频在线播放 | 国产精久 | 国产精品久久久久久三级 | 啪啪网站视频 | 无码人妻黑人中文字幕 | 免费人成 | 一区二区三区在线免费观看视频 | 日韩123区 | 国产精品超碰 | 国产又粗又猛又大爽 | 男人天堂视频网 | 欧美日韩一区二区三区69堂 | 欧美一区三区二区在线观看 | 色综合久久88色综合天天6 | 高h视频在线免费观看 | www.xxx.国产 | 激情文学欧美 | 丁香六月激情综合 | 免费黄色的网站 | 亚洲欧美一区二区三区在线 | 国产精品欧美性爱 | 久久久在线免费观看 | 二区视频在线 | 天天干天天爽天天操 | 少妇被粗大猛进进出出s小说 | 熟女一区二区三区四区 | 欧美1区2区3区 | 一区二区av电影 | 秋霞三区 | 天堂va蜜桃一区 | 国产视频日韩 | 精品久久久久久亚洲精品 | 女~淫辱の触手3d动漫 | www.jizzcom | a级一级黄色片 | 午夜高潮视频 | av一二三四区| 最新国产精品自拍 | 日本护士体内she精2xxx | 开心色站 | 日本一级做a爱片 | 精品资源在线 | 一本高清dvd在线播放 | 女人被男人躁得好爽免费视频 | 涩涩涩涩涩涩涩涩涩 | 锕锕锕锕锕锕锕锕 | 欧美成综合 | 污污视频在线 | 国产精品VideoSex性欧美 | 亚洲天堂一区二区三区 | 91国产免费视频 | 欧美大喷水吹潮合集在线观看 | 亚洲码在线观看 | 国产精品三区在线观看 | 日韩一级二级三级 | 在线电影一区二区三区 | 高清欧美性猛交 | a视频免费在线观看 | 日本黄网站色大片免费观看 | 天天操天天弄 | 国产精品无码久久久久成人app | 成人人伦一区二区三区 | 精品一区二区无码 | 午夜精品久久久久久 | 一区二区三区在线观看免费 | 大陆农村乡下av | 国产精品sm | 亚洲天堂网在线观看视频 | 亚洲天堂第一 | 成人一区二区三区在线 | 污视频网站在线看 | 美女尻逼视频 | 在线免费观看黄色小视频 | 精品成人一区二区 | 神马午夜激情 | 欧美日韩在线播放视频 | 亚洲视频免费在线播放 | 天天插天天干 | 欧美激情一区 | 懂色av一区二区 | 秋霞av影院| 影音先锋人妻啪啪av资源网站 | 欧美大片xxxx | 欧美一区免费 | 欧美成人精品欧美一级乱黄 |