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-hk/n/141660.html
微信掃一掃
支付寶掃一掃