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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ElastciSearch简单总结(笔记)

發布時間:2023/11/29 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ElastciSearch简单总结(笔记) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:

  前段時間在項目中使用了es,作為一個當前比較流行的分布式搜索引擎,在學習和使用它的過程中,踩了不少坑,這篇文章先簡單整理了一下,后續會整理一下之前踩過的一些坑。?

1. ElastciSearch是什么

  ElasticSearch是一個基于Apache Lucene的開源搜索引擎。它不僅僅是Lucene和全文搜索,我們還能這樣去描述他:

    • 分布式的實時文件存儲,每個字段都被索引并可被搜索
    • 分布式的實時搜索引擎
    • 可以擴展到上百臺服務器

2. ElasticSearch的安裝與配置

  安裝方法網上很多,http://blog.csdn.net/whxaing2011/article/details/18237733

  配置:elasticsearch.yml

3. 與ElasticSearch的交互

  ElasticSearch提供多種語言的客戶端API,詳見

  ElasticSearcg為.NET用戶提供了三種客戶端,?

  • ElasticSearch.NET

    一個非常底層且靈活的客戶端

  • NEST

    ElasticSearch的官方客戶端,具有非常簡潔的API。可以映射所有請求和響應對象,擁有一個強類型查詢DSL。依賴ElasticSearch.NET客戶端。

  • PlainElastic.Net

    PlainElastic.net是一個Github開源項目。關于它和ElasticSearch.NET/NEST的活躍度對比。

4. 面向文檔

  ElasticSearch是面向文檔的,在ES中可以對文檔(而非成行成列的數據)進行索引、搜索、排序、過濾。這種理解數據的方式和以往關系型數據庫不同,這也是ES能夠執行復雜的全文搜索的原因之一。

5. 對索引的理解

  在ElasticSearch中存儲數據的行為就叫做索引(Index),前面所說的文檔歸屬于不同種類型(Type),而這些類型存在于索引。

  數據庫->表->行->列? 對應es中 索引->類型->文檔->字段

  索引的創建

  語法:

PUT /indextest/people/1 {"name":"張三","age": 25,"sex": "","interests":["體育", "音樂"] }

  通過HTTP的GET方法來檢索文檔,同樣的,可以通過DELETE方法來刪除文檔,如果想要更新就在PUT一次。

6. 搜索

?? ?????語法:GET /indextest/people/1

     DELETE /indextest /people/1

??? 簡單搜索

  搜索全部的病人信息?

    語法:GET /elasticsearch1/patient/_search

  這里,我們在結尾使用關鍵字_search來取代原來的文檔ID。返回的結果中hits數組中包含了我們所有的文檔。

???  接下來,讓我們搜索年齡大于35的患者

???????   GET /elasticsearch1/patient/_search?q=Pat_Age:>35

?????? 這種方法叫做查詢字符串(query string)搜索,像傳遞URL參數一樣傳遞語句

??? 使用DSL語句查詢

  查詢字符串搜索有局限性,ES還提供了豐富靈活的查詢語言叫做DSL查詢,它可以構建更加復雜強大的查詢。DSL以JSON請求體的形式出現。

GET /elasticsearch1/patient/_search {"query" : {"range" : {"Pat_Age" : {"gt": 35}}} }

  更復雜的查詢

GET /elasticsearch1/patient/_search {"query" : {"bool": {"must": [{"term": {"Pat_Marital": {"value": "已婚"}}},{"range" : {"Pat_Age" : {"gt": 35}}}]}} }

? ? ?加過濾器

GET /elasticsearch1/patient/_search {"query" : {"filtered": {"query": {"bool": {"must": [ {"term": {"Pat_Marital": {"value": "已婚" }}},{"range" : {"Pat_Age" : {"gt": 35 }}}]}},"filter": {"term": {"Pat_Gender": "男" }}}} }

  ElasticSearch也提供了這種特殊的緩存,filter cache來存儲filters得到的結果集。此外,緩存filters不需要太多的內存(它只保留一種信息,即哪些文檔與filter相匹配),同時它可以由其它的查詢復用,極大地提升了查詢的性能。

  并非所有的filters都會緩存,默認情況下,如下的filters不會被緩存:

Query查詢對象會將所有的條件綁定到一起存儲到緩存中,只要有一個條件改變就不能重用。

? ? 全文搜索

  接下來介紹全文搜索—一種傳統數據庫不好實現的搜索

???  如搜索所有得糖尿病又得高血壓的病人

GET /patientcase/patientcase/_search {"query" : {"match" : {"Case_HDSD00_11_076" : "高血壓糖尿病" }} }

  如下,用<em></em>來標識匹配到的單詞高亮

GET /patientcase/patientcase/_search {"query" : {"match" : {"Case_HDSD00_11_076" : "高血壓糖尿病" }},"highlight": {"fields" : {"Case_HDSD00_11_076" : {} }} }

? ? query_string

  參數:

???????   這里只挑幾個常用的參數說一下,其他的一般默認就夠了

??? ???   query:需要查詢的具體內容

???????   default_field:查詢的字段

    ?default_operator:默認運算符

GET /patientcase/patientcase/_search {"query" : {"query_string":{"default_field":"name","query":"張*" }} }

? ? 聚合

  ES可以通過聚合做一些分析統計

GET /elasticsearch1/patient/_search {"filter": {"has_child": {"type": "adm","query": {"term": {"Adm_AdmDiagnos": {"value": "高血壓" }}}}},"aggs" : {"avg_age" : {"terms" : { "field" : "Pat_Gender" } }} }

  相關資料:

???   Mastering Elasticsearch(中文版)??http://udn.yyuap.com/doc/mastering-elasticsearch/index.html

???   ElasticSearch權威中文版??https://es.xiaoleilu.com/

   ElasticSearch英文API??https://www.elastic.co/guide/en/elasticsearch/client/index.html

???   ES相關插件??http://www.cnblogs.com/huangfox/p/3541300.html

?

轉載于:https://www.cnblogs.com/felix-hpp/p/8939934.html

總結

以上是生活随笔為你收集整理的ElastciSearch简单总结(笔记)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。