如何使用elasticsearch實現高效的搜索和數據分析

Elasticsearch是一個基於Lucene的搜索引擎。它具有分散式、實時和可伸縮的特性,也支持文本、數值、地理空間、結構化和非結構化數據。在本文中,我們將詳細介紹如何使用Elasticsearch實現高效的搜索和數據分析。我們將從以下方面進行闡述:

一、安裝和配置Elasticsearch

在使用Elasticsearch前,我們需要先安裝和配置Elasticsearch。我們可以通過以下步驟安裝和配置Elasticsearch。

1、下載並解壓Elasticsearch zip文件。

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz
tar -xzvf elasticsearch-7.6.2-linux-x86_64.tar.gz

2、啟動Elasticsearch。

cd elasticsearch-7.6.2/bin
./elasticsearch

3、使用curl測試Elasticsearch的安裝是否成功。

curl -XGET 'http://localhost:9200/'

如果返回以下內容,則證明Elasticsearch已經成功安裝和啟動。

{
  "name" : "elasticsearch",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "sMmGDwEyTQGKzC5wdb-Lzg",
  "version" : {
    "number" : "7.6.2",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "b7e28a7",
    "build_date" : "2020-03-26T06:34:37.794943Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

二、索引數據

在Elasticsearch中,我們需要先將數據索引到索引庫中,然後才能進行搜索和數據分析。我們可以通過以下步驟索引數據。

1、創建索引和文檔類型。

PUT /myindex
{
    "mappings": {
        "properties": {
            "title": { "type": "text"},
            "content": { "type": "text"},
            "timestamp": { "type": "date"}
        }
    }
}

2、添加數據到索引庫。

POST /myindex/_doc/1
{
  "title": "elasticsearch search",
  "content": "Elasticsearch is a distributed, RESTful search and analytics engine.",
  "timestamp": "2020-05-01T10:33:30"
}

3、查詢數據。

GET /myindex/_search
{
    "query": {
        "match": {
            "title": "search"
        }
    }
}

以上代碼將從myindex索引庫中查詢標題中包含search關鍵字的所有文檔。

三、搜索和過濾數據

使用Elasticsearch進行搜索和過濾數據的方法如下:

1、使用match查詢。

GET /myindex/_search
{
    "query": {
        "match": {
            "title": "search"
        }
    }
}

以上代碼將從myindex索引庫中查詢所有標題包含search的文檔。

2、使用bool查詢。

GET /myindex/_search
{
    "query": {
        "bool": {
            "must": [
                { "match": { "title":   "search" }},
                { "match": { "content": "engine"   }}
            ],
            "must_not": [
                { "match": { "content": "distributed" }}
            ],
            "should": [
                { "match": { "title": "restful" }},
                { "match": { "content": "analytics" }}
            ]
        }
    }
}

以上代碼將從myindex索引庫中查詢所有標題包含search並且內容包含engine,並且不包含distributed,或者標題包含restful或者內容包含analytics的文檔。

3、使用範圍過濾。

GET /myindex/_search
{
    "query": {
        "range" : {
            "timestamp" : {
                "gte" : "2020-05-01T10:00:00",
                "lt" :  "2020-05-01T11:00:00"
            }
        }
    }
}

以上代碼將從myindex索引庫中查詢所有時間戳在2020-05-01T10:00:00和2020-05-01T11:00:00之間的文檔。

四、聚合數據

Elasticsearch不僅可以搜索和過濾數據,還可以應用聚合操作以提取和匯總數據。下面是使用Elasticsearch進行聚合操作的示例代碼。

1、使用terms聚合。

GET /myindex/_search
{
    "aggs" : {
        "title_counts" : {
            "terms" : { "field" : "title" }
        }
    }
}

以上代碼將從myindex索引庫中查詢所有標題,並按照標題統計計數。

2、使用date_histogram聚合。

GET /myindex/_search
{
    "aggs" : {
        "date_histogram" : {
            "date_histogram" : {
                "field" : "timestamp",
                "interval" : "month"
            }
        }
    }
}

以上代碼將從myindex索引庫中查詢所有時間戳,並按照月份統計計數。

五、總結

在本文中,我們介紹了如何使用Elasticsearch實現高效的搜索和數據分析。我們討論了Elasticsearch的安裝和配置、索引數據、搜索和過濾數據、聚合數據等多個方面。使用Elasticsearch,我們可以輕鬆地管理大量結構化和非結構化數據,並從中提取有用的信息。

原創文章,作者:QGNS,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/141660.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
QGNS的頭像QGNS
上一篇 2024-10-08 17:53
下一篇 2024-10-08 17:53

相關推薦

  • 如何使用Python獲取某一行

    您可能經常會遇到需要處理文本文件數據的情況,在這種情況下,我們需要從文本文件中獲取特定一行的數據並對其進行處理。Python提供了許多方法來讀取和處理文本文件中的數據,而在本文中,…

    編程 2025-04-29
  • 如何使用jumpserver調用遠程桌面

    本文將介紹如何使用jumpserver實現遠程桌面功能 一、安裝jumpserver 首先我們需要安裝並配置jumpserver。 $ wget -O /etc/yum.repos…

    編程 2025-04-29
  • Hibernate註解聯合主鍵 如何使用

    解答:Hibernate的註解方式可以用來定義聯合主鍵,使用@Embeddable和@EmbeddedId註解。 一、@Embeddable和@EmbeddedId註解 在Hibe…

    編程 2025-04-29
  • 如何使用Python讀取CSV數據

    在數據分析、數據挖掘和機器學習等領域,CSV文件是一種非常常見的文件格式。Python作為一種廣泛使用的編程語言,也提供了方便易用的CSV讀取庫。本文將介紹如何使用Python讀取…

    編程 2025-04-29
  • 如何使用HTML修改layui內部樣式影響全局

    如果您想要使用layui來構建一個美觀的網站或應用,您可能需要使用一些自定義CSS來修改layui內部組件的樣式。然而,修改layui組件的樣式可能會對整個頁面產生影響,甚至可能破…

    編程 2025-04-29
  • 如何使用random生成不重複的隨機數

    在編程開發中,我們經常需要使用隨機數來模擬一些場景或生成一些數據。但是如果隨機數重複,就會造成數據的不準確性。這時我們就需要使用random庫來生成不重複且隨機的數值。下面將從幾個…

    編程 2025-04-29
  • 如何使用GPU加速運行Python程序——以CSDN為中心

    GPU的強大性能是眾所周知的。而隨著深度學習和機器學習的發展,越來越多的Python開發者將GPU應用於深度學習模型的訓練過程中,提高了模型訓練效率。在本文中,我們將介紹如何使用G…

    編程 2025-04-29
  • 如何使用Python導入Random庫

    Python是一門優秀的編程語言,它擁有豐富的第三方庫和模塊。其中,Random庫可謂是最常用的庫之一,它提供了用於生成隨機數的功能。對於開發人員而言,使用Random庫能夠提高開…

    編程 2025-04-29
  • 理解agentmain方法如何使用

    如果你不清楚如何使用agentmain方法,那麼這篇文章將會為你提供全面的指導。 一、什麼是agentmain方法 在Java SE 5.0中,Java提供了一個機制,允許程序員在…

    編程 2025-04-29
  • 如何使用Python將print輸出到界面?

    在Python中,print是最常用的調試技巧之一。在編寫代碼時,您可能需要在屏幕上輸出一些值、字元串或結果,以便您可以更好地理解並調試代碼。因此,在Python中將print輸出…

    編程 2025-04-29

發表回復

登錄後才能評論