Elasticsearch 基础检索(全文检索/多语言检索/地理位置查询)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Elasticsearch是一个基于Lucene的实时的分布式搜索和分析引擎,设计用于云计算中能够达到实时搜索,稳定,可靠,快速,并支持RESTFUL风格的url访问。全文检索、多语言检索以及基于地理位置信息检索在Elasticsearch上应用广泛,本场实验将分别介绍如何使用Elasticsearch8.5版本进行全文检索、多语言检索和地理位置查询三个Elasticsearch基础检索子场景的实现。

实验描述

Elasticsearch 是一个基于 Lucene 的实时的分布式搜索和分析引擎,设计用于云计算中能够达到实时搜索,稳定,可靠,快速,并支持 RESTFUL 风格的 url 访问。全文检索、多语言检索以及基于地理位置信息检索在 Elasticsearch 上应用广泛,本场实验将分别介绍如何使用 Elasticsearch8.5 版本进行全文检索、多语言检索和地理位置查询三个 Elasticsearch 基础检索子场景的实现。



实验资源

本实验三个子场景使用到的实验资源和配置相同:

说明:本示例遵循最小原则,使用满足场景需求的最小资源。

资源:阿里云Elasticsearch实例。

付费说明: 阿里云Elasticsearch 新用户可享受2C4G规格免费试用1个月,若免费试用资格已过期或已无试用资格,可选择按量付费资源,推荐使用4C8G规格,3.7元起/时(不同地域价格有所差异)。  


背景知识

本场景主要涉及以下云产品和服务:

检索分析服务Elasticsearch版


阿里云Elasticsearch 是基于开源 Elasticsearch构建的全托管 Elasticsearch 云服务,在100%兼容开源功能的同时,支持开箱即用、按需付费。不仅提供云上开箱即用的 Elasticsearch、Logstash、Kibana、Beats 在内的 Elastic Stack 生态组件,还与 Elastic 官方合作提供免费 X-Pack(白金版高级特性)商业插件,集成了安全、SQL、机器学习、告警、监控等高级特性,被广泛应用于实时日志分析处理、信息检索、以及数据的多维查询和统计分析等场景。



前置知识

  • 了解 Elasticsearch 相关的基础知识。
  • 了解 Elasticsearch 检索相关知识
  • 了解 Elasticsearch 分词相关知识。



创建实例

选择一:开通免费试用(开发者规格)

说明:本实验三个子场景的实例创建步骤相同。


  1. 访问阿里云免费试用-检索分析服务Elasticsearch版商品试用卡片。单击页面右上方的登录/注册按钮,并根据页面提示完成账号登录(已有阿里云账号)、账号注册(尚无阿里云账号)或实名认证(根据试用产品要求完成个人实名认证或企业实名认证)。


  1. 成功登录后,单击检索分析服务 Elasticsearch卡片上的立即试用


  1. 在配置Elasticsearch实例信息面板,完成参数配置。


完成本教程需要的配置如表格所示,未提及的配置保持默认或按需修改。

配置项

教程配置

实例类型

通用商业版

Elasticsearch版本

8.5

本教程的操作和示例均以Elasticsearch 8.5版本为例,其他版本操作和示例可能略有差别,详细信息请参见Elasticsearch快速入门

场景初始化配置

通用场景

地域和可用区

  • 地域:华北2(北京)
  • 可用区:北京可用区K、I、L、J

数据节点规格

2核4 GB开发者规格

数据节点存储类型

高效云盘

数据单节点存储空间

20 GB

数据节点数量

3

Kibana规格

1核2 GB

专有网络

选择您已创建的专有网络。如果没有创建,请参见创建和管理专有网络创建。

虚拟交换机

选择您已创建的虚拟交换机。如果没有创建,请参见创建和管理交换机创建。

资源组

选择您已创建的资源组,可以选择默认资源组。如果没有创建,请参见创建资源组创建。

实例名称

test-es

登录名

elastic

登录密码

自定义密码

服务协议

选中


  1. 单击立即试用,并按照页面提示进入控制台或直接点击登录控制台


  1. 在阿里云Elasticsearch控制台的左侧导航栏,单击Elasticsearch实例


  1. 在顶部菜单栏,选择购买实例时所配置的地域,本教程为华北2(北京)。在实例列表中查看创建成功的实例及其状态。实例创建后,大约需要5分钟生效。等待实例生效且状态变为正常,才可继续执行后续步骤。


选择二:开通后付费实例(以4C8G为例)

说明:本实验三个子场景的实例创建步骤相同。


  1. 访问检索分析服务Elasticsearch版实例创建页面。单击页面右上方的登录/注册按钮,并根据页面提示完成账号登录(已有阿里云账号)、账号注册(尚无阿里云账号)或实名认证(根据试用产品要求完成个人实名认证或企业实名认证)。

image.png


  1. 点击页面【创建」按钮,进入购买页面,完成实例创建配置。本文使用8.5.1版本的实例,其他配置请自定义选择。配置参数的详细说明,请参见购买页面参数


  1. 单击创建->集群配置->网络及系统配置确认订单

image.png

image.png

image.png


  1. 预览实例配置,选中服务协议,单击立即购买

image.png


  1. 提示开通成功后,单击管理控制台,在产品列表中选择Elasticsearch,进入阿里云Elasticsearch的控制台的概览页面。

image.png


image.png


  1. 在顶部菜单栏,选择地域。

image.png


  1. 在左侧导航栏,单击Elasticsearch实例,在实例列表中查看创建成功的阿里云Elasticsearch实例。

image.png



访问实例

等待实例状态变为正常,即可执行以下步骤,通过 Kibana 访问实例。


说明 本实验三个子场景的实例访问步骤相同;

您也可以通过curl命令和客户端方式访问实例。具体操作,请参见访问实例


  1. 在Elasticsearch实例列表中,单击目标实例ID。

image.png


  1. 在左侧导航栏,选择配置与管理 > 可视化控制

image.png


  1. 可选:Kibana区域,单击修改配置,配置Kibana的公网访问白名单,在IP白名单中加入您客户端的IP地址。首次从公网入口进入Kibana控制台且公网访问配置未修改时,系统会提示您修改配置,您可根据页面提示进行修改。具体操作,请参见配置Kibana公网或私网访问白名单

image.png


image.png


image.png


image.png

百度ip,可查询本机的公网ip。

image.png

image.png


  1. 返回集群管理页面,在Kibana区域,单击公网入口

image.png


  1. 在登录页面输入账号和密码,单击登录。账号为elastic,密码为您创建实例时设置的密码。如果忘记可重置,重置密码的具体操作和注意事项,请参见重置实例访问密码

image.png


  1. 在登录成功页面,单击Explore on my own

image.png


  1. 在左侧导航栏,选择最下面“Management”单击“开发工具”。

image.png


  1. Console页签下,执行如下命令访问Elasticsearch实例。
GET /

image.png



场景一 全文检索实验

实验简介

体验此场景后,可以掌握的知识有:

  • 开通阿里云Elastisearch实例。
  • 如何访问且使用kibana进行索引的创建、文档插入、文档查询。
  • 基于Elasticsearch分词检索和全文检索匹配。


体验目标

通过本教程的操作,在Elasticsearch实例上通过kibana进行分词检索和全文检索匹配。


步骤一:上传文件并创建索引

1、本地文件准备

message.csv


2、在kibana首页,选择“上传文件”

image.png


3、浏览本地文件

image.png


4、编辑字段名称

image.png


5、导入-->高级  ,设置索引名称,字段分词器

image.png

image.png


6、确认数据插入成功。

GET /message/_search
{
  "query":{
    "match_all":{}
  }
}

image.png


步骤二:检索数据

1、全文检索,搜索”双11“相关商品信息

#检索文档
GET message/_search
{
  "query": {
    "match": {
      "content": "双11"
    }
  }
}


完成检索后,返回如下结果。

image.png


2、全文检索,搜索"婴儿"相关商品信息。

GET message/_search
{
  "query": {
    "match": {
      "content": "婴儿"
    }
  }
}


完成检索后,返回如下结果。

image.png


3、全文检索,搜索“儿童汽车”相关商品信息。

#使用match_phrase加slop参数匹配
GET message/_search
{
  "query": {
    "match_phrase": {
      "city": {
        "query": "儿童汽车",
        "slop": 10
      }
    }
  }
}


完成检索后,返回如下结果。

image.png



场景二 多语言检索实验

实验简介

体验此场景后,可以掌握的知识有:

  • 开通阿里云Elastisearch实例
  • 如何访问且使用kibana进行索引的创建、数据导入
  • 针对多语言搜索在Elasticsearch上如何创建索引,以及如何进行检索匹配。


体验目标

通过本教程的操作,在Elasticsearch实例上通过kibana进行多语言的查询检索。


1、英语全文搜索支持

预期结果:三个搜索语句返回的结果最前面的数据_id的分别为:1,4,2


1.1 创建索引

PUT /english_index
{
  "settings": {
    "number_of_shards": 5,
    "number_of_replicas": 1
  },
  "mappings": {
      "properties": {
        "text": {
          "type": "text"
        }     
      }
    }
  }

image.png

1.2 插入数据

POST /_bulk
{ "index":  { "_index": "english_index","_id": "1" }}
{ "text" : "Hangzhou, referred to as \"Hangzhou\", formerly known as Lin 'an and Qiantang, is a prefecture-level city, provincial capital, sub-provincial city, mega-city of Zhejiang Province, the core city of Hangzhou metropolitan area, the economic, cultural, scientific and educational center of Zhejiang Province approved by The State Council, and one of the central cities of the Yangtze River Delta. As of 2019, the city has jurisdiction over 10 municipal districts, 2 counties and 1 county-level city, with a total area of 16,850 square kilometers and a built-up area of 648.46 square kilometers. By the end of 2021, Hangzhou had a permanent population of 12.204 million. In 2021, the city's GDP reached 1,810.9 billion yuan." }
{ "index":  { "_index": "english_index","_id": "2" }}
{ "text" : "Hangzhou is one of the first national historical and cultural cities, known as the \"Southeast county\" in the world. Excavations at the Trans-Lake Bridge site show that humans lived here more than 8,000 years ago. The Liangzhu Culture dating back more than 5,000 years is known as the \"dawn of Chinese civilization\". Hangzhou has a history of more than 2,200 years since it was established as a county in the Qin Dynasty. It was once the capital of the Wu Yue State and the Southern Song Dynasty." }
{ "index":  { "_index": "english_index","_id": "3" }}
{ "text" : "Hangzhou is located in East China, the lower reaches of Qiantang River, the southeast coast, the north of Zhejiang Province, and the southern end of the Beijing-Hangzhou Grand Canal. The geographical coordinates are between 29°11 '-30 °34' N and 118°20 '-120 °37' E. Hangzhou is the core city of the Hangzhou Bay Greater Bay Area and the center city of the G60 Science and Innovation Corridor. Hangzhou has numerous cultural and historical sites. There are a large number of natural and cultural landscape relics in and around the West Lake, representative of which are West Lake culture, Liangzhu culture, silk culture and tea culture." }
{ "index":  { "_index": "english_index","_id": "4" }}
{ "text" : "Hangzhou is known as \"heaven on earth\" because of its beautiful scenery. Thanks to the convenience of the Beijing-Hangzhou Grand Canal and treaty ports, as well as its own developed silk and grain industries, Hangzhou was historically an important commercial distribution center. Since the new century, with the drive of Alibaba and other high-tech enterprises, the Internet economy has become a new economic growth point in Hangzhou. Hangzhou hosted the 2016 G20 Summit, the 2018 World Short Course Swimming Championships and the 2022 Asian Games. Hangzhou ranked 5th in China's Top 100 Cities list in 2020." }

image.png


1.3 搜索数据以及查询结果

搜索数据

#搜索语句一
GET english_index/_search
{
  "query": {
    "match": {
      "text": "The GDP of Hangzhou is increasing gradually"
    }
  }
}
#搜索语句二
GET english_index/_search
{
  "query": {
    "match": {
      "text": "Hangzhou is one of the top 100 cities"
    }
  }
}
#搜索语句三
GET english_index/_search
{
  "query": {
    "match": {
      "text": "Hangzhou is one of the first national historical and cultural city"
    }
  }
}


查询结果:搜索语句一结果符合预期,id=1排在最前面

image.png


查询结果:搜索语句二结果符合预期,id=4排在最前面

image.png


查询结果:搜索语句三结果符合预期,id=2排在最前面

image.png


2、法语全文搜索支持

预期结果:三个搜索语句返回的结果最前面的数据_id的分别为:1,4,2


2.1 创建索引

PUT /french_index
{
  "settings": {
    "number_of_shards": 5,
    "number_of_replicas": 1
  },
  "mappings": {
      "properties": {
        "text": {
          "type": "text",
          "analyzer": "french"
        }
    }
  }
}


image.png


2.2 插入数据

POST /_bulk
{ "index":  { "_index": "french_index","_id": "1" }}
{ "text" : "Hangzhou, appelé «hang», anciennement connu sous le nom de linan et qiantang, la ville de la province de zhejiang, la capitale de la province, la ville vice-provinciale, la mégapole, la ville du noyau de la zone métropolitaine de hangzhou, le conseil d’état a approuvé et identifié le centre économique, culturel, scientifique et éducatif de la province de zhejiang, l’une des villes du centre du delta du yangtze. À partir de 2019, la ville est administrée par 10 districts municipaux, 2 comtés et une municipalité au niveau de comté. La superficie totale de la ville est de 16850 kilomètres carrés et la zone bâtie de 648,46 kilomètres carrés. À la fin de 2021, la ville de hangzhou a une population permanente de 12 204 000 personnes. En 2021, la ville a réalisé un produit régional brut de 1810,9 milliards de yuans." }
{ "index":  { "_index": "french_index","_id": "2" }}
{ "text" : "Hangzhou est l’une des premières villes historiques et culturelles nationales, célèbre pour son comté célèbre du sud-est. Les fouilles sur le site du pont trans-lac ont révélé que des humains y ont peuplé il y a plus de 8000 ans. La culture liangzhu, qui date de plus de 5000 ans, est appelée «l’aube de la civilisation chinoise». Hangzhou a une histoire de plus de 2200 ans depuis la création du comté sous la dynastie qin. Hangzhou a été la capitale de wuyue et de song du sud." }
{ "index":  { "_index": "french_index","_id": "3" }}
{ "text" : "Hangzhou est située dans la région de l’est de la Chine, en aval de la rivière qiantang, sur la côte sud-est, au nord du zhejiang et à l’extrémité sud du grand canal de pékin hangzhou. Ses coordonnées géographiques se situent entre 29° 11’ - 30° 34’ de latitude nord et 118° 20’ - 120° 37’ de longitude est. Hangzhou est la ville centrale de la grande baie de la baie de hangzhou et la ville centrale du corridor G60 kochuang. Hangzhou a de nombreux monuments humanistes. Il y a un grand nombre de vestiges de paysages naturels et humains dans et autour de xihu. Les représentants sont la culture xihu, la culture liangzhu, la culture de la soie et la culture du thé." }
{ "index":  { "_index": "french_index","_id": "4" }}
{ "text" : "Hangzhou a la réputation de «paradis sur terre» en raison de ses paysages magnifiques. Bénéficiant de la commodité du grand canal de pékin et des ports commerciaux, ainsi que de ses propres industries bien développées de la soie et des céréales, hangzhou a été historiquement un important centre de distribution commerciale. Depuis le nouveau siècle, avec alibaba et d’autres entreprises de haute technologie, l’économie d’internet est devenue le nouveau point de croissance économique de hangzhou. Le sommet du G20 2016, le championnat du monde de natation en piscine courte 2018 et les jeux asiatiques 2022 ont eu lieu à hangzhou. Top 100 des villes chinoises en 2020. Hangzhou est la 5ème." }

image.png


2.3 搜索数据以及查询结果

#搜索语句一
GET french_index/_search
{
  "query": {
    "match": {
      "text": "La valeur totale de la production de hangzhou augmente progressivement"
    }
  }
}
#搜索语句二
GET french_index/_search
{
  "query": {
    "match": {
      "text": "Hangzhou est top 100 des villes chinoises en 2020."
    }
  }
}
#搜索语句三
GET french_index/_search
{
  "query": {
    "match": {
      "text": "Hangzhou est l’une des premières villes historiques et culturelles"
    }
  }
}


查询结果:搜索语句一结果符合预期,id=1排在最前面

image.png


查询结果:搜索语句二结果符合预期,id=4排在最前面

image.png


查询结果:搜索语句三结果符合预期,id=2排在最前面

image.png


3、支持多个主要语种

包括汉语、英语、法语、德语、俄语、日语、韩语、越语、缅语


3.1 开启“允许自动创建索引”

image.png


3.2 在kibana运行以下指令

POST language/_doc
{
  "中文": "中文",
  "英语": "english",
  "法语": "Français",
  "德语": "Deutsch",
  "日语": "にほんご",
  "俄语": "Русский язык",
  "韩语": "한국어",
  "越南语": "Tiếng Việt",
  "缅甸语": "မြန်မာဘာသာ"
}


image.png

3.3 查看返回结果

使用GET language/_search指令查看是否返回了与插入数据一样的结果

image.png



场景三 地理位置查询实验

实验简介

体验此场景后,可以掌握的知识有:

  • 开通阿里云Elastisearch实例
  • 使用kibana进行索引的创建、数据导入
  • 针对地理位置经纬度信息,进行特殊字段类型的设定,并基于范围进行检索匹配。


体验目标

通过本教程的操作,在Elasticsearch实例上通过kibana进行地理位置信息的查询检索。


步骤一:创建索引并插入测试数据

1、创建索引attractions,指定userid为keyword字段、locationname为text字段、location为geo_point字段、accesstime为date字段。

PUT /attractions
{
  "mappings": {
      "properties": {
      "userid": {
          "type": "keyword"
        },
        "locationname": {
          "type": "text"
        },
        "location": {
          "type": "geo_point"
        },
    "accesstime": {
          "type": "date",
      "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
        }
      }
  }
}


image.png


2、通过bulk方式插入测试数据

POST /_bulk
{ "index":  { "_index": "attractions","_id": "1" }}
{"userid": "001", "locationname": "颐和园", "location":[116.273987,39.992019], "accesstime": "2021-05-01 10:30:00"}
{ "index":  { "_index": "attractions","_id": "2" }}
{"userid": "002", "locationname": "中关村", "location":[116.326933,39.981078], "accesstime": "2021-05-02 14:45:30"}
{ "index":  { "_index": "attractions","_id": "3" }}
{"userid": "003", "locationname": "动物园", "location":[116.338239,39.942547], "accesstime": "2021-05-03 09:20:15"}
{ "index":  { "_index": "attractions","_id": "4" }}
{"userid": "004", "locationname": "北京大学", "location":[116.319935,39.996275], "accesstime": "2021-05-04 16:55:10"}
{ "index":  { "_index": "attractions","_id": "5" }}
{"userid": "005", "locationname": "香山公园", "location":[116.191247,39.997232], "accesstime": "2021-05-05 13:00:45"}
{ "index":  { "_index": "attractions","_id": "6" }}
{"userid": "006", "locationname": "圆明园", "location":[116.309868,40.018307], "accesstime": "2021-05-06 19:10:20"}


image.png


步骤二:查询数据

1、通过userid,查询用户访问景点的记录。

GET /attractions/_search
{
  "query": {
    "query_string": {
      "default_field": "userid",
      "query": "005"
    }
  }
}


image.png


2、查询该景点附近10公里范围内的其他景点以及用户的访问时间

GET /attractions/_search
{
 "query": {
   "bool": {
     "filter": {
       "geo_distance": {
         "distance": "10km", 
         "location": { 
           "lat":  116.191247,
           "lon": 39.997232
         }
       }
     }
   }
 }
}


image.png




Elasticsearch技术社区钉钉交流群

image.png

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
3月前
|
存储 API 数据库
检索服务elasticsearch索引(Index)
【8月更文挑战第23天】
66 6
|
3月前
|
存储 负载均衡 监控
检索服务elasticsearch节点(Node)
【8月更文挑战第23天】
58 5
|
3月前
|
存储 监控 负载均衡
检索服务elasticsearch集群(Cluster)
【8月更文挑战第23天】
63 3
|
1月前
|
存储 JSON 监控
大数据-167 ELK Elasticsearch 详细介绍 特点 分片 查询
大数据-167 ELK Elasticsearch 详细介绍 特点 分片 查询
52 4
|
1月前
|
自然语言处理 搜索推荐 Java
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(一)
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图
49 0
|
1月前
|
存储 自然语言处理 搜索推荐
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(二)
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(二)
34 0
|
2月前
|
存储 自然语言处理 关系型数据库
ElasticSearch基础3——聚合、补全、集群。黑马旅游检索高亮+自定义分词器+自动补全+前后端消息同步
聚合、补全、RabbitMQ消息同步、集群、脑裂问题、集群分布式存储、黑马旅游实现过滤和搜索补全功能
ElasticSearch基础3——聚合、补全、集群。黑马旅游检索高亮+自定义分词器+自动补全+前后端消息同步
|
2月前
|
JSON 自然语言处理 算法
ElasticSearch基础2——DSL查询文档,黑马旅游项目查询功能
DSL查询文档、RestClient查询文档、全文检索查询、精准查询、复合查询、地理坐标查询、分页、排序、高亮、黑马旅游案例
ElasticSearch基础2——DSL查询文档,黑马旅游项目查询功能
|
3月前
|
网络协议 Java API
SpringBoot整合Elasticsearch-Rest-Client、测试保存、复杂检索
这篇文章介绍了如何在SpringBoot中整合Elasticsearch-Rest-Client,并提供了保存数据和进行复杂检索的测试示例。
SpringBoot整合Elasticsearch-Rest-Client、测试保存、复杂检索
|
3月前
|
SQL 存储 自然语言处理
检索服务elasticsearch全文搜索
【8月更文挑战第22天】
55 3

相关产品

  • 检索分析服务 Elasticsearch版