Elasticsearch
陈彬_smile
待到山花烂漫时,她在丛中笑。
展开
-
ES(Elasticsearch)分片内部原理
在集群内的原理, 我们介绍了分片, 并将它 描述成最小的工作单元。但是究竟什么是一个分片,它是如何工作的? 在这个章节,我们回答以下问题:为什么搜索是近实时的? 为什么文档的 CRUD (创建-读取-更新-删除) 操作是实时的? Elasticsearch 是怎样保证更新被持久化在断电时也不丢失数据? 为什么删除文档不会立刻释放空间? refresh,flush, 和optimizeAPI 都做了什么, 你什么情况下应该使用他们?1.使文本可被搜索必须解决的第一个...原创 2020-06-14 16:46:21 · 656 阅读 · 0 评论 -
ES(Elasticsearch)索引管理(四)
1.重新索引你的数据尽管可以增加新的类型到索引中,或者增加新的字段到类型中,但是不能添加新的分析器或者对现有的字段做改动。 如果你那么做的话,结果就是那些已经被索引的数据就不正确, 搜索也不能正常工作。对现有数据的这类改变最简单的办法就是重新索引:用新的设置创建新的索引并把文档从旧的索引复制到新的索引。批量重新索引同时并行运行多个重建索引任务,但是你显然不希望结果有重叠。正确的做法是按日期或者时间 这样的字段作为过滤条件把大的重建索引分成小的任务:GET /old_index/_sea原创 2020-06-14 12:02:43 · 191 阅读 · 0 评论 -
ES(Elasticsearch)索引管理(三)
1.动态映射当 Elasticsearch 遇到文档中以前 未遇到的字段,它用dynamic mapping来确定字段的数据类型并自动把新的字段添加到类型映射。有时这是想要的行为有时又不希望这样。通常没有人知道以后会有什么新字段加到文档,但是又希望这些字段被自动的索引。也许你只想忽略它们。如果Elasticsearch是作为重要的数据存储,可能就会期望遇到新字段就会抛出异常,这样能及时发现问题。幸运的是可以用dynamic配置来控制这种行为 ,可接受的选项如下:true:动态添加新...原创 2020-06-14 11:50:08 · 231 阅读 · 0 评论 -
ES(Elasticsearch)索引管理(二)
1.类型和映射类型在 Elasticsearch 中表示一类相似的文档。 类型由名称—比如user或blogpost—和映射组成。映射, 就像数据库中的 schema ,描述了文档可能具有的字段或属性、每个字段的数据类型—比如string,integer或date—以及Lucene是如何索引和存储这些字段的。类型可以很好的抽象划分相似但不相同的数据。但由于 Lucene 的处理方式,类型的使用有些限制。1.1Lucene 如何处理文档在 Lucene 中,...原创 2020-06-11 10:05:30 · 232 阅读 · 0 评论 -
ES(Elasticsearch)索引管理(一)
1.创建一个索引PUT /localhost:9200/{ "fq_goods_index": { "mappings": { "goods_fq": { "properties": { "MonthlyPrice": { "type": "float" },原创 2020-06-10 21:46:43 · 433 阅读 · 0 评论 -
ES(Elasticsearch)执行分布式检索
我们将讨论一下在分布式环境中搜索是怎么执行的。一个 CRUD 操作只对单个文档进行处理,文档的唯一性由_index,_type, 和routingvalues(通常默认是该文档的_id)的组合来确定。 这表示我们确切的知道集群中哪个分片含有此文档。搜索需要一种更加复杂的执行模型因为我们不知道查询会命中哪些文档: 这些文档有可能在集群的任何分片上。 一个搜索请求必须询问我们关注的索引(index or indices)的所有分片的某个副本来确定它们是否含有任何匹配的文档。但是找到所有...原创 2020-06-10 12:47:05 · 192 阅读 · 0 评论 -
ES(Elasticsearch)排序与相关性
默认情况下,返回的结果是按照相关性进行排序的——最相关的文档排在最前。1.按照字段的值排序在这个案例中,通过时间来对 tweets 进行排序是有意义的,最新的 tweets 排在最前。 我们可以使用sort参数进行实现:GET /_search{ "query" : { "bool" : { "filter" : { "term" : { "user_id" : 1 }} } }, "sort": { "...原创 2020-06-08 21:38:54 · 1998 阅读 · 0 评论 -
ES(Elasticsearch)请求体查询
1. 查询表达式查询表达式(Query DSL)是一种非常灵活又富有表现力的 查询语言。空查询(empty search) —{}— 在功能上等价于使用 match_all 查询, 正如其名字一样,匹配所有文档:GET /_search{ "query": { "match_all": {} }}1.1 查询语句的结构一个查询语句的典型结构:{ QUERY_NAME: { ARGUMENT: VALUE,原创 2020-06-08 16:29:40 · 925 阅读 · 0 评论 -
ES(Elasticsearch)映射和分析
1.精确值 VS 全文Elasticsearch 中的数据可以概括的分为两类:精确值和全文。精确值很容易查询。结果是二进制的:要么匹配查询,要么不匹配。这种查询很容易用 SQL 表示:WHERE name = "John Smith" AND user_id = 2 AND date > "2014-09-15"查询全文数据要微妙的多。我们问的不只是“这个文档匹配查询吗”,而是“该文档匹配查询的程度有多大?”换句话说,该文档与给定查询的相关性如何?我们很少对全原创 2020-06-08 12:48:48 · 318 阅读 · 0 评论 -
ES(Elasticsearch)搜索
1.空搜索搜索API的最基础的形式是没有指定任何查询的空搜索,它简单地返回集群中所有索引下的所有文档:GET /_search返回的结果(为了界面简洁编辑过的)像这样:{ "hits" : { "total" : 14, "hits" : [ { "_index": "us", "_type": "tweet", "_id": "7",原创 2020-06-07 21:34:57 · 244 阅读 · 0 评论 -
ES(Elasticsearch)分布式文档存储
1.路由一个文档到一个分片中当索引一个文档的时候,文档会被存储到一个主分片中。 Elasticsearch 如何知道一个文档应该存放到哪个分片中呢?当我们创建文档时,它如何决定这个文档应当被存储在分片1还是分片2中呢?首先这肯定不会是随机的,否则将来要获取文档的时候我们就不知道从何处寻找了。实际上,这个过程是根据下面这个公式决定的:shard = hash(routing) % number_of_primary_shardsrouting是一个可变值,默认是文档的_id,也...原创 2020-06-07 17:46:17 · 2168 阅读 · 0 评论 -
ES(Elasticsearch)数据输入和输出
一个对象是基于特定语言的内存的数据结构。为了通过网络发送或者存储它,我们需要将它表示成某种标准的格式。JSON是一种以人可读的文本表示对象的方法。 它已经变成 NoSQL 世界交换数据的事实标准。当一个对象被序列化成为 JSON,它被称为一个JSON 文档。Elastcisearch 是分布式的文档存储。它能存储和检索复杂的数据结构—序列化成为JSON文档—以实时的方式。 换句话说,一旦一个文档被存储在 Elasticsearch 中,它就是可以被集群中的任意节点检索到。在 ...原创 2020-06-07 16:00:24 · 1262 阅读 · 0 评论 -
ES(Elasticsearch)集群内的原理
1.空集群如果我们启动了一个单独的节点,里面不包含任何的数据和索引,那我们的集群看起来就是一个Figure 1, “包含空内容节点的集群”。一个运行中的 Elasticsearch 实例称为一个节点,而集群是由一个或者多个拥有相同cluster.name配置的节点组成, 它们共同承担数据和负载的压力。当有节点加入集群中或者从集群中移除节点时,集群将会重新平均分布所有的数据。当一个节点被选举成为主节点时, 它将负责管理集群范围内的所有变更,例如增加、删除索引,或者增加、删除节点等。 ...原创 2020-06-06 17:49:20 · 691 阅读 · 0 评论 -
ES(Elasticsearch)查询语法(一)
1.轻量搜索(get形式的请求)http://localhost:9200/test1_student_index/architect_student/_searchtest1_student_index,索引名称;architect_student,类型名称;_search,查询查询stu_name=“pinan”的学生信息http://localhost:9200/test1_student_index/architect_student/_search?q=stu_name:pinan原创 2020-06-06 11:35:21 · 540 阅读 · 0 评论 -
ES(Elasticsearch)简介
1.查询ES服务概要http://localhost:9200/?pretty2.面向文档Elasticsearch 是面向文档的,意味着它存储整个对象或文档。Elasticsearch 不仅存储文档,而且索引每个文档的内容,使之可以被检索。在 Elasticsearch 中,我们对文档进行索引、检索、排序和过滤—而不是对行列数据。这是一种完全不同的思考数据的方式,也是 Elasticsearch 能支持复杂全文检索的原因。3.JSONElasticsearch 使用 J...原创 2020-06-04 09:54:05 · 214 阅读 · 0 评论