elastic search(弹性搜索)

合集下载

ElasticSearch核心知识总结(一)es的六种搜索方式和数据分析

ElasticSearch核心知识总结(一)es的六种搜索方式和数据分析

ElasticSearch核⼼知识总结(⼀)es的六种搜索⽅式和数据分析es的六种搜索⽅式1. query string searchGET /ecommerce/product/_search //查询所有数据{"took": 4,//耗费⼏毫秒"timed_out": false,//是否超时"_shards": {//数据拆分成5个分⽚,对所有请求都会打到所有primary shared(或者是它的某个replica shared也可以)"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 1,//条数"max_score": 1,//查询匹配度"hits": [{"_index": "ecommerce","_type": "product","_id": "2","_score": 1,"_source": {"name": "jiajieshi yagao","desc": "jiajieshi meibai","price": 30,"producer": "jiajieshi producer","tags": ["meibai","fangzhu"]}}]}}GET /ecommerce/product/_search?q=name:yagao&sort=price:desc2. query DSLDSL:Domain Specified Language:特定领域的语⾔http request body:请求体,⽤json格式构建查询语法GET /ecommerce/product/_search{"query": {"match": {"name": "yagao" //查询包含单词}},"_source": ["name","price"],//不写查询所有字段"sort": [{"price": {"order": "desc"//倒序排序}}],"from": 0,//分页"size": 1}3. query filterGET /ecommerce/product/_search{"query": {"bool": {//多个条件"must": [{"match": {"name": "yagao"}"filter": {//过滤条件"range": {"price": {"gte": 10,"lte": 40}}}}}}4. full-text searchGET /ecommerce/product/_search{"query": {"match": {"producer": "lishi producer"//会查包含这两个单词的所有数据 }}}{"took": 5,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 4,"max_score": 0.51623213,"hits": [{"_index": "ecommerce","_type": "product","_id": "3","_score": 0.51623213,//匹配度最⾼"_source": {"name": "lishi yagao","desc": "lishi meibai","price": 50,"producer": "lishi producer","tags": ["meibai","fangzhu"]}},{"_index": "ecommerce","_type": "product","_id": "1","_score": 0.25811607,"_source": {"name": "jiaqiangban gaolujie yagao2","desc": "gaoxiao meibai","price": 30,"producer": "gaolujie producer","tags": ["meibai","fangzhu"]}},{"_index": "ecommerce","_type": "product","_id": "2","_score": 0.1805489,"_source": {"name": "jiajieshi yagao","desc": "jiajieshi meibai","price": 40,"producer": "jiajieshi producer","tags": ["meibai","fangzhu"]{"_index": "ecommerce","_type": "product","_id": "4","_score": 0.14638957,"_source": {"name": "special yaogao","desc": "special meibai","price": 50,"producer": "special yagao producer","tags": ["meibai"]}}]}}5. phrase search必须包含⼀模⼀样的串,才会返回(包含短语的意思)GET /ecommerce/product/_search{"query": {"match_phrase": {"producer": "yagao producer"}}}{"took": 3,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 1,"max_score": 0.70293105,"hits": [{"_index": "ecommerce","_type": "product","_id": "4","_score": 0.70293105,"_source": {"name": "special yaogao","desc": "special meibai","price": 50,"producer": "special yagao producer","tags": ["meibai"]}}]}}6. highlight search查询到的结果⾼亮GET /ecommerce/product/_search{"query": {"match_phrase": {"producer": "gaolujie producer"}},"highlight": {"fields": {"producer": {}}}}{"took": 18,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 1,"max_score": 0.51623213,"hits": [{"_index": "ecommerce","_type": "product","_id": "1","_score": 0.51623213,"_source": {"name": "jiaqiangban gaolujie yagao2","desc": "gaoxiao meibai","price": 30,"producer": "gaolujie producer","tags": ["meibai","fangzhu"]},"highlight": {"producer": ["<em>gaolujie</em> <em>producer</em>"]}}]}}计算每个tag下的商品数量将⽂本field的fielddata属性设置为truePUT /ecommerce/_mapping/product{"properties": {"tags":{"type": "text","fielddata": true}}}再运⾏下⾯才能查出来GET /ecommerce/product/_search{"aggs": {"group_by_tags": {"terms": {"field": "tags"}}}}"aggregations": {"group_by_tags": {"doc_count_error_upper_bound": 0,"sum_other_doc_count": 0,"buckets": [{"key": "fangzhu","doc_count": 3},{"key": "meibai","doc_count": 3},{"key": "suibian","doc_count": 1}]}}对名称中包含yagao的商品,计算每个tag下的商品数量GET /ecommerce/product/_search{"query": {"match": {"name": "yagao"}},"aggs": {"group_by_tags": {"terms": {"field": "tags"}}}}先分组,再计算每组的平均值,计算每个tag下的商品的平均价格GET /ecommerce/product/_search{"size": 0,"aggs": {"group_by_tags": {"terms": {"field": "tags"},"aggs": {"avg_price": {"avg": {"field": "price"}}}}}}对上述结果按平均价格排序GET /ecommerce/product/_search{"size": 0,"aggs": {"group_by_tags": {"terms": {"field": "tags","order": {"avg_price": "desc"}},"aggs": {"avg_price": {"avg": {"field": "price"}}}}}}按照指定的价格范围区间进⾏分组,然后在每组内再按照tag进⾏分组,最后再计算每组的平均价格GET /ecommerce/product/_search{"size": 0,"aggs": {"group_by_price": {"range": {"field": "price","ranges": [{"from": 0,"to": 20},{"from": 20,"to": 40},{"from": 40,"to": 60}]},"aggs": {"group_by_tags": { "terms": {"field": "tags"},"aggs": {"avg_price": { "avg": {"field": "price" }}}}}}}}。

es检索条件

es检索条件

es检索条件摘要:一、es 简介1.Elasticsearch(简称es)的定义2.es 的发展历程和应用场景二、es 检索条件1.基本检索条件a.全文搜索b.精确匹配c.范围查询d.过滤条件2.高级检索条件a.排序b.分页c.聚合查询d.脚本查询三、es 检索实战1.安装和配置es2.索引文档3.执行检索操作4.分析检索结果正文:Elasticsearch(简称es)是一款基于Lucene 开发的分布式搜索引擎,它具有强大的全文搜索功能,广泛应用于大数据分析、日志处理、网站搜索等领域。

本文将介绍es 的基本检索条件和高级检索条件,并以实战为例演示如何进行es 检索。

一、es 简介Elasticsearch 是一款基于Apache Lucene 开发的分布式搜索引擎,它具有强大的全文搜索功能,广泛应用于大数据分析、日志处理、网站搜索等领域。

自2010 年开源以来,es 已经发展到多个版本,支持多种数据存储和查询方式,成为企业级搜索解决方案的首选。

二、es 检索条件es 提供了丰富的检索条件,可以满足各种查询需求。

1.基本检索条件a.全文搜索:通过_all 字段进行全文搜索,支持多字段搜索和短语搜索。

b.精确匹配:通过字段名进行精确匹配查询,如:关键字=值。

c.范围查询:通过字段名和范围进行查询,如:字段名>=值1 AND 字段名<=值2。

d.过滤条件:通过bool 查询中的filter 子句进行过滤,如:字段名=值。

2.高级检索条件a.排序:通过sort 子句对检索结果进行排序,如:按照字段名升序或降序排列。

b.分页:通过from 和size 子句进行分页查询,如:from=起始位置AND size=每页数量。

c.聚合查询:通过聚合查询对数据进行统计和分析,如:按照字段名进行计数、求和等操作。

d.脚本查询:通过script 子句进行脚本查询,如:通过JavaScript 编写自定义查询逻辑。

elasticsearch 的自动类型推断机制

elasticsearch 的自动类型推断机制

elasticsearch 的自动类型推断机制
Elasticsearch是一个开源分布式搜索引擎,它基于Java,具有分布式、零配置、自动发现、索引自动分片、索引副本机制、RESTful风格接口、多数据源、自动搜索负载等特点。

在写入文档时,如果索引不存在,Elasticsearch会自动创建索引,并自动根据文档 json)推算出字段类型。

具体来说,字符串和日期格式字符串会被设置为date类型,数字会被设置为float或long类型,其他字符串会被设置为text类型,并增加一个子字段keyword;布尔值会被推算成boolean类型;浮点数会被设置为float类型;整数会被设置为long类型;对象会被设置为object类型。

需要注意的是,在实际生产使用中,不建议使用自动类型推断机制,因为它可能会出错。

建议显式设置字段类型,并且一旦确定了索引映射类型就无法修改,可能会对查询产生影响。

此外,字段自定义设置还可以根据使用场景合理设置类型,例如去掉不必要的分词,从而优化Elasticsearch的空间。

elasticsearch中文翻译

elasticsearch中文翻译

elasticsearch中文翻译Elasticsearch(中文译为“弹性搜索”)是一个开源的分布式搜索和分析引擎,用于快速搜索、分析和存储大规模的数据。

它是基于Apache Lucene构建的,提供了一个简单易用的RESTful API接口,支持实时搜索、文本分析、聚合分析、地理位置搜索等功能。

以下是一些常见的Elasticsearch用法和中英文对照例句:1. 创建索引(Create Index):- 中文:创建索引(创建一个新的索引)- 英文:Create an index (Create a new index)2. 添加文档(Index Document):- 中文:添加文档到索引中(将一篇文档添加到索引中)- 英文:Index a document (Add a document to the index)3. 搜索文档(Search Document):- 中文:搜索匹配的文档(从索引中搜索匹配指定条件的文档)- 英文:Search for documents (Search for documents that match specified criteria from the index)4. 聚合分析(Aggregation):- 中文:执行聚合操作(对搜索结果进行聚合分析,如计算平均值、最大值、最小值等)- 英文:Perform aggregation (Perform aggregation analysis on search results, such as calculating average, maximum, minimum, etc.)5. 过滤器(Filter):- 中文:使用过滤器限制搜索结果(通过添加过滤器条件对搜索结果进行筛选)- 英文:Filter search results (Filter search results by adding filter criteria)6. 排序(Sorting):- 中文:根据指定字段对搜索结果进行排序(按照指定字段的升序或降序排序搜索结果)- 英文:Sort search results based on specified field (Sort search results in ascending or descending order based on specified field)7. 分页(Pagination):- 中文:对搜索结果进行分页(设置每页显示的文档数量,获取指定页数的搜索结果)- 英文:Paginate search results (Set the number of documents displayed per page and retrieve search results for specified page number)8. 地理位置搜索(Geo-location Search):- 中文:根据地理位置信息搜索附近的文档(通过经纬度坐标搜索附近的文档)- 英文:Search for documents near a specific location (Search for documents near a specific location using latitude and longitude coordinates)9. 更新文档(Update Document):- 中文:更新现有文档(更新索引中已存在的文档)- 英文:Update an existing document (Update a document that already exists in the index)10. 删除文档(Delete Document):- 中文:从索引中删除文档(从索引中删除指定的文档)- 英文:Delete a document from the index (Delete a specified document from the index)这些例句涵盖了一些常见的Elasticsearch用法,可以帮助您更好地理解和使用Elasticsearch。

elesticsearch考点(一)

elesticsearch考点(一)

elesticsearch考点(一)Elasticsearch考点及详解一、What is Elasticsearch•Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎。

•它可以实时存储、搜索和分析大量结构化和非结构化的数据。

•Elasticsearch使用分布式架构,具有强大的水平扩展性和容错性。

二、基础概念1.节点(Node)–Elasticsearch集群中的每个服务器都是一个节点。

–一个节点是一个单独的Elasticsearch实例,拥有自己的唯一标识符。

2.索引(Index)–索引是具有相似特征的文档集合的逻辑容器。

–它们用于存储和组织文档,类似于关系数据库中的表。

3.文档(Document)–文档是可以被索引的最小信息单元。

–它可以是一个JSON对象,可以是任何非结构化的数据。

–文档必须属于一个索引。

4.类型(Type)–类型是索引中文档的逻辑分类或分区。

–一个索引中可以定义多个类型,每个类型可以定义自己的字段映射。

–从Elasticsearch 版本开始,多个类型被废弃。

5.分片(Shard)–索引可以被划分为多个分片,每个分片都是一个独立的索引片段。

–分片可以在不同的节点上进行分布,以实现数据的分布式存储和处理。

三、常用操作1.创建索引–创建一个名称为”my_index”的索引:PUT /my_index{"settings": {"number_of_shards": 1,"number_of_replicas": 0}}–上述请求指定了分片数为1,副本数为0。

2.插入文档–在索引”my_index”中插入一个文档:POST /my_index/_doc/1{"title": "Elasticsearch Tutorial","content": "This is a beginner's guide to Elasticsearch."}–文档ID为1,可自动生成或用户指定。

elastic基本操作

elastic基本操作

elastic基本操作Elasticsearch是一个开源的分布式搜索引擎,它使用Lucene搜索库来提供全文搜索功能。

本文将介绍Elasticsearch的基本操作,包括索引、搜索、聚合和删除等。

1. 索引数据在Elasticsearch中,数据是通过索引(index)的方式存储的。

索引可以看作是一个数据库,它包含了一组文档(document)。

每个文档都有一个唯一的ID,以及一组字段(field)。

要索引一个文档,需要指定它所属的索引、类型(type)和ID,以及文档的内容。

curl -X PUT 'localhost:9200/my_index/my_type/1' -H'Content-Type: application/json' -d'{'title': 'Elasticsearch基本操作','content': '本文介绍Elasticsearch的基本操作。

','date': '2021-08-01'}'上面的命令将一个文档索引到my_index索引、my_type类型、ID为1的文档中。

文档包含了title、content和date三个字段。

可以使用GET命令来查看文档:curl -X GET 'localhost:9200/my_index/my_type/1'2. 搜索数据要搜索数据,可以使用查询(query)语句。

查询可以是简单的匹配查询,也可以是复杂的布尔查询。

Elasticsearch支持多种查询类型,包括match、term、range、bool等。

下面是一个简单的match查询,用于查找title字段中含有Elasticsearch关键字的文档:curl -X GET 'localhost:9200/my_index/my_type/_search' -H 'Content-Type: application/json' -d'{'query': {'match': {'title': 'Elasticsearch'}}}'3. 聚合数据聚合(aggregation)是Elasticsearch中非常强大的功能,它可以对搜索结果进行统计和分析。

elastticsearch的不分组聚合运算

elastticsearch的不分组聚合运算

elastticsearch的不分组聚合运算
摘要:
1.简介
2.Elasticsearch 中的聚合
3.不分组聚合运算
4.应用场景
5.总结
正文:
Elasticsearch 是一个基于Lucene 的分布式搜索和分析引擎,广泛应用于大数据处理和分析领域。

在Elasticsearch 中,聚合是一种常用的数据分析手段,可以帮助用户快速地从海量数据中提取有价值的信息。

其中,不分组聚合运算是一种特殊的聚合方式,它可以在不对数据进行分组的情况下进行聚合操作。

在Elasticsearch 中,聚合分为两种类型:分组聚合和不分组聚合。

分组聚合是基于某个字段对数据进行分组,然后对每个分组进行聚合计算。

而不分组聚合则是在不对数据进行分组的情况下进行聚合运算。

不分组聚合运算主要包括以下几种:
1.计数(count):计算文档数量。

2.求和(sum):计算指定字段的和。

3.平均值(avg):计算指定字段的平均值。

4.最大值(max):找出指定字段的最大值。

5.最小值(min):找出指定字段的最小值。

不分组聚合运算的应用场景非常广泛,例如在数据分析、报表生成、网站统计等方面都有重要作用。

例如,我们可以通过Elasticsearch 的不分组聚合运算来统计某一时间段内的访问量、销售额等信息。

总之,Elasticsearch 的不分组聚合运算是一种灵活且高效的数据分析手段。

elasticsearch面试题

elasticsearch面试题

elasticsearch面试题Elasticsearch是一个开源的实时分布式搜索和分析引擎,用于处理海量数据,并能够快速地进行搜索、分析和可视化。

在使用和部署Elasticsearch时,可能会遇到一些挑战和问题。

本文将提供一些常见的Elasticsearch面试题,并探讨它们的解决方法。

1. 什么是Elasticsearch?它的主要特点是什么?Elasticsearch是一种开源的全文搜索和分析引擎,基于Lucene库。

它具有以下主要特点:- 实时性:Elasticsearch具有快速响应和实时搜索能力,能够在毫秒级别内返回搜索结果。

- 分布式:Elasticsearch采用分布式架构,可以将数据分片存储在多个节点上。

这种方式可以提高搜索和处理大规模数据的性能。

- 可伸缩性:Elasticsearch支持横向扩展,可以轻松地添加或删除节点,以适应不同规模的数据和负载。

- 多数据类型支持:Elasticsearch支持多种数据类型,包括文本、数值、地理位置等,可以满足不同应用场景的需求。

- 强大的查询语言:Elasticsearch提供丰富的查询语言,包括全文搜索、过滤、聚合等功能,可以灵活地进行数据搜索和分析。

2. 什么是索引(Index)和文档(Document)?在Elasticsearch中,索引(Index)是一种逻辑上的数据容器,类似于关系数据库中的数据库。

一个索引可以包含多个文档(Document),每个文档就相当于是数据库中的一行记录。

每个文档都有一个唯一的ID来标识自己,而索引可以根据需要进行分片和复制。

3. 如何在Elasticsearch中执行基本的搜索操作?在Elasticsearch中,可以通过使用查询语句来执行搜索操作。

常见的查询语句包括:- Match查询:根据指定的字段进行全文匹配搜索。

- Term查询:根据指定的字段进行精确匹配搜索。

- Range查询:根据指定的范围进行搜索,如日期范围、数值范围等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
走近 elastic search
分享人 林云霞
Part 01 Part 02 Part 03 Part 04
概念解释 系统原理 分布式集群 应用场景
01
概念解释
概念解释
open - source
scales massively hign availability schema free
RESTful API full text search
添加标题
查询
get http://localhost:9200/blog/newarticle/1 {
"_index": "blog", "_type": "newarticle", "_id": "1", "_version": 2, "found": true, "_source": { "author": "林云霞", "creatDate": "20170729", "content": "基本原理了已经介绍完了 !", "place": "招银网络科技", "updateDate": "20170804" } }
文档1(Doc 1): 零售/应用/开发/一室/主题/分享 文档2(Doc 2): 数据/仓库/团队/主题/分享
系统原理
倒排索引
文档1(Doc 1): 零售/应用/开发/一室/主题/分享 文档2(Doc 2): 数据/仓库/团队/主题/分享
词项 文档
零售
应用 开发 一室 主题 分享 数据
doc1
doc1 doc1 doc1 doc1、doc2 doc1、doc2 doc2
03
分布式集群
分布式集群
空集群
分布式集群
集群健康
http://localhost:9200/_cluster/health
{
"cluster_name": "my-application", "status": "green", "timed_out": false, "number_of_nodes": 1, "number_of_data_nodes": 1, "active_primary_shards": 0, "active_shards": 0, "relocating_shards": 0, "initializing_shards": 0, "unassigned_shards": 0, "delayed_unassigned_shards": 0, "number_of_pending_tasks": 0, "number_of_in_flight_fetch": 0, "task_max_waiting_in_queue_millis": 0, "active_shards_percent_as_number": 100
: :
3, 1
分布式集群
添加索引
分布式集群
故障转移
分布式集群
横向扩展
随着应用需求的增长,我们该如何扩展?如果我们启动第三个节点 ,我们的集群会自我感知,这时便成为了三节点集群
分布式集群
更多扩展
http://localhost:9200/blog/_settings {"number_of_replicas" : 2}
系统原理
文档是Elasticsearch的数据单位,对文档中的词项进行分词,并创建 去重词项的有序列表,将词项与其在文档中出现的位置列表关联,便 形成了倒排索引。 我们来看下如下2个文档是如何被倒排索引的:
文档1(Doc 1): 零售应用开发一室主题分享 文档2(Doc 2): 数据仓库团队主题分享
分布式集群
应对故障
我们已经说过Elasticsearch可以应对节点失效,所以让我们继续 尝试。如果我们杀掉第一个节点的进程(以下简称杀掉节点),看起 来像如此:
04
应用场景
应用场景
场景—:使用Elasticsearch作为主要的后端
应用场景
场景二:在现有系统中增加elasticsearch
概念解释
集群 点多台Es服务器的结合的统称叫ES集群,一个集群包含多台服务器,多 个节点。 节点 一个节点就是集群中的一个服务器
分片
主分片和副本分片
主分片
1
N
复制分片
概念解释
索引
中的索引是组织数据的逻辑空间,一个索引就是一个拥有几分相似特征 的文档的集合 数据库 类型 在一个索引中,你可以定义一种或多种类型 表 文档 一个文档是一个可被索引的基础信息单元 行
系统原理
memory builder write request route request
refresh every 1 sec
filesystem cache
commit to dish with translog flush
coordinating node
shard
commit when every 5 sec with every write operation and when flushed translog flush every 30 min or when gets too big empoty translog
系统原理
新建索引
当我们发送索引一个新文档的请求到协调节点后,将发生如下一组操作: Elasticsearch集群中的每个节点都包含了改节点上分片的元数据信息。协调 节点(默认)使用文档ID参与计算,以便为路由提供合适的分片。 Elasticsearch使用MurMurHash3函数对文档ID进行哈希,其结果再对分片 数量取模,得到的结果即是索引文档的分片。 shard = hash(document_id) % (num_of_primary_shards)
应用场景
场景三:使用elasticsearch和现有的工具
例如,假设要部署一个大规模的日志框架存储,搜索,并分析了大 量的事件。
应用场景
国外应用示例
1、Wikipedia(维基百科)使用ES提供全文搜索并高亮关键字 2、StackOverflow(IT问答网站)结合全文搜索与地理位置查询 3、Github 使用 Elasticsearch 搜索 20TB 的数据,包括 13 亿的文件 和 1300 亿行的代码 4、Mozilla 5、Sony 公司使用 elasticsearch 作为信息搜索引擎
JSON over HTTP
Lucene based
Elasticsearch
real time search and analytics engine
distributed
multi tenancy
概念解释
简介
Elastic Search 是一个基于 Lucene 构建的开源,分布式, RESTful 搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可 靠,快速,安装使用方便。支持通过 HTTP 使用 JSON 进行数据索引 ,它能够快速搜索数十亿的文件以及 PB 级的数据,结构化或者非结 构化的数据都可以。
"_index": "blog", "_type": "newarticle", "_id": "1", "_version": 2, "result": "updated", "_shards": { "total": 3, "successful": 2, "failed": 0 }, "created": false
"_index": "blog", "_type": "newarticle", "_id": "1", "_version": 1, "result": "created", "_shards": { "total": 3, "successful": 2, "failed": 0 }, "created": true
disk
inside a shard
添加标题
新建索引
post http://localhost:9200/blog/newarticle/1 { "author":"林云霞", "creatDate":"20170729", "content":"elastic search 是一个非常优秀 的搜索引擎", "place":"招银网络科技" } {
应用场景国内使用案例(在云分析、网盟、预测、、钱包、风控等业务上都应用 了ES,单集群每天导入30TB+数据,总共每天60TB+)、新浪 、阿里 巴巴、腾讯等公司均有对ES的使用
主节点
控制集群,负责集群中的操作,协调创建索引、查询请求
客户端节点
相关文档
最新文档