发布信息

python操作elasticsearch (python发邮件代码)

     2024-10-22 20:24:48     722

本文目录导航:

python操作elasticsearch

在启动Python操作Elasticsearch之前,首先须要确保Elasticsearch已成功装置。

装置Elasticsearch对应的包理论经过Python的包治理工具pip启动,详细命令为:pip install elasticsearch。

衔接Elasticsearch,须要创立一个客户端对象。

例如,代码如下:pythonfrom elasticsearch import Elasticsearches = Elasticsearch()创立索引,经常使用客户端对象调用create_index方法,参数为索引称号。

如创立名为movies的索引(index=movies, ignore=400)删除索引经常使用delete_index方法,参数为索引称号(index=movies, ignore=[400, 404])减多数据到索引,经常使用客户端对象的index方法,参数包含索引称号、文档ID以及要减少的文档数据。

(index=movies, id=1, body={name: Avatar, year: 2009, director: James Cameron})修负数据,经过指定文档ID和要修正的字段,经常使用update方法。

(index=movies, id=1, body={doc: {director: James Cameron, year: 2010}})依据条件修负数据,经常使用update_by_query方法,参数为查问条件和要修正的数据。

_by_query(index=movies, body={query: {match: {director: James Cameron}}, script: {source: ctx._ = }})删除数据,经常使用delete方法,参数为索引称号、文档ID。

(index=movies, id=1)依据条件删除数据,经常使用delete_by_query方法,参数为查问条件。

_by_query(index=movies, body={query: {match: {director: James Cameron}}})查问一切数据,经常使用search方法,理论不提供查问条件。

(index=movies, body={query: {match_all: {}}})失掉某个index下文档的数量,经常使用count方法。

(index=movies)失掉满足某个条件文档的数量,经常使用count方法,参数为查问条件。

(index=movies, body={query: {match: {director: James Cameron}}})含糊查问match,查问字段title中含有四川的数据。

(index=movies, body={query: {match: {title: 四川}}})含糊查问match_phrase(不分词),精准单值查问term,精准多值查问term,通配符查问wildcard,正则查问regexp。

(index=movies, body={query: {match_phrase: {title: {query: 四川, slop: 2}}}})(index=movies, body={query: {term: {province: 四川}}})(index=movies, body={query: {terms: {province: [四川, 重庆]}}})(index=movies, body={query: {wildcard: {title: 川*}}})(index=movies, body={query: {regexp: {title: ^川}}})范畴查问range,查问province字段四扫尾的数据。

(index=movies, body={query: {range: {province: {gte: 四, lt: 五}}}})布尔查问bool,查问content字段中含有广西并且release_time字段的期间小于以后期间。

(index=movies, body={query: {bool: {must: [{match: {content: 广西}}, {range: {release_time: {lt: 以后期间}}}]}}})

Elasticsearch散布式分歧性原理剖析(三)-Data篇

原文首发于云栖社区的博客,作者对Elasticsearch散布式分歧性原理启动了深度剖析,尤其关注了6.2版本中的Data局部。

系列内容详细解释了ES集群结构、master选举和meta降级机制,本文则深化讨论了数据流,包含写入流程、分歧性算法太平洋A(PacificA)、SequenceNumber和Checkpoint的设计。

以下是文章的关键内容:

数据写入流程

数据写入首先写入Primary正本,而后并发写入Replica,确保客户端收到应对。

在ES6.2版本中,writeforactiveshards参数保障了至少一个Primary和生动正本在写入前存在,提高了数据牢靠性。

不过,这不是严厉的分歧性保障,只是写入前的审核。

复制逻辑

Primary写入后,等候一切Replica照应,即使Primary挂掉,也能防止数据失落。

若Replica写入失败,ES会重试,但不强迫写入一切节点,只是报告写入结果。

读取数据分歧性

若某个Replica写入失败,它将从meta中移除,不再接受读恳求,用户短期内或者读到旧数据,但ES作为近实时系统,这理论是可以接受的。

Primary视角

数据先写入内存(Lucene)并刷新,而后写入translog以保障耐久性和复原。

translog提供数据复原和同步机制,但先写Lucene是为了处置或者的写入失败状况。

PacificA算法

Elasticsearch的复制模型基于PacificA算法,具备保障Primary的惟一性和数据降级的顺序性。

ES经常使用Master保养Index的meta消息,相似于Algorithm中的Configuration Manager。

SequenceNumber和Checkpoint

SequenceNumber和Checkpoint在ES中表演关键角色,用于极速缺点复原和Translog的GC,保障数据的分歧性和完整性。

与PacificA的比拟

虽然ES遵照PacificA,但存在一些不严厉的中央,如不齐全满足算法要求,造成并非严厉的分歧性保障。

总结

本文详细剖析了ES的数据分歧性原理,展现了其在处置大规模数据集时的复杂性。 python操作elasticsearch

系列文章旨在片面了解ES的散布式分歧性,等候读者的深化交换。

Elasticsearch+head+Ik中文分词器的装置以及Go操作Elasticsearch

elasticsearch是一个基于Lucene的搜查主机,经常使用Java言语编写,作为Apache容许下的开发祥码颁布。

elasticsearch在Lucene的基础上启动了改良,提供多种言语的接口,使全文搜查变得便捷。

开发者可以经过便捷的restful api成功搜查配置,无需面对Lucene的复杂性。

elasticsearch的指标是让全文搜查变得更便捷。

elasticsearch集群由多个节点组成,其中一个为主节点,经过选举发生。

一个集群由一个惟一的名字标识,一个节点只能经过指定集群名字参与。

节点作为集群的一局部,存储数据,并介入索引和搜查配置。

索引是文档的汇合,与数据库中的库结构相似,由名字标识,并用于索引、搜查、降级和删除文档。

文档是ES中的关键实体,由字段造成。

映射定义了文档的规定,包含分词和过滤环节。

elasticsearch中,每个索引可以分为多个分片,这样可以将大的索引拆分,散布到不同的节点上,成功水平裁减和并发提高性能。

正本用于提高系统的容错性,成功高可用(HA)。

当某个节点或分片损坏或失落时,可以从正本中复原,同时正本也提高了ES的查问效率,ES会智能对搜查恳求启动负载平衡。

elasticsearch提供RESTful API启动增删改查操作。

经常使用_search启动查问,query定义查问条件,bool可以组合查问,term不分词婚配,match_all婚配所有,filter用于过滤条件。

查问条件可以经常使用must、should和must_not启动逻辑组合,区分示意必定满足、可选满足和不满足的条件。

在elasticsearch7.0之后,不允许type造成的查征询题,可经过include_type_name=true参数处置。

查找时可以启动高亮显示,提高搜查结果的可读性。

关于Go言语操作elasticsearch,可以经常使用/olivere/elastic/v7包,成功与elasticsearch的交互。

详细代码示例可以在/jeffcail/go-...地址找到。

相关内容 查看全部