当前位置: 首页 > 知识库问答 >
问题:

elasticsearch中的术语很混乱

薛淮晨
2023-03-14

由于我是一个新的弹性搜索,我有困惑在弹性搜索方面。

 1) shard
 2) cluster
 3) difference between number_of_nodes and number_of_data_nodes
 4) difference active_primary_shards  and active_shards
 5) relocating_shards 
 6) unassigned_shards 

启动elasticsearch时,它显示为5个分片。但是插入数据后,分片不断增加。我不知道分片的默认设置是什么。

提前道谢!

共有1个答案

逑兴安
2023-03-14
  • 每次尝试插入新文档时,碎片是否会增加10?
  • 是否确实将文档插入到在尝试插入文档之前创建的索引中?T

我问的原因是,当你尝试插入一个文档时,如果碎片增加了10,那么你将不是插入到你已经创建的索引中,而是根据ElasticSearch的“开箱即用”默认值创建一个全新的索引。即5个碎片和1个副本,即10个碎片(1组副本用于复制主碎片)。

例如,以下是如何创建索引并完全控制创建了多少碎片-

curl -XPUT <host>:<port>/<index> -d '{
"settings": {
        "number_of_shards": 2,
        "number_of_replicas": 0,
        "analysis": {
            "analyzer": {
              ..........
              ..........
              ..........
              ..........
              ..........
              ..........
              ..........
              ..........
             },
             "filter": {
              ..........
              ..........
              ..........
              ..........
              ..........
              ..........
              ..........
              ..........
             }
        }
    }
}'
  1. ElasticSearch中的碎片本质上是一个Lucene实例。
  2. ElasticSearch中的群集实质上是包含相同群集名称的一个或多个节点,允许它们连接在一起以分布式的方式传播碎片。
  3. 数据节点的数量实质上是不仅仅是协调器节点的节点的数量,即将接收搜索请求、可能是主节点的节点以及将保持和包含数据(碎片)的节点。协调器节点将只向数据节点分发请求
  4. 活动主分片是群集中节点上可用的分片,活动分片将在该计数中包含副本。
  5. 重新定位碎片是指那些可能迁移到同一集群内的不同节点的碎片,这是由于新节点加入了集群,并且随着ElasticSearch的分发,它将转移碎片以重新平衡集群,从而确保可用性。
  6. 未分配给节点的碎片。
 类似资料:
  • 问题内容: 我正在尝试使用以下查询对以下数据进行elasticsearch来执行术语聚合,输出将名称分解为标记(请参见下面的输出)。因此,我尝试将os_name映射为multi_field,但现在无法通过它查询。是否可以有没有令牌的索引?例如“ Fedora Core”? 查询: 数据: 输出: 映射: 问题答案: 实际上,您应该像这样更改映射 并且您的aggs应该更改为:

  • 问题内容: 我是相当新的elasticsearch,使用6.5版。我的数据库包含网站页面及其内容,如下所示: 我已经能够执行一个简单的查询,该查询返回所有内容中包含“汽车”一词的文档(使用Python): 结果看起来像这样: “ _id”指的是一个域,所以我基本上回来了: abc.com def.com jkl.com 但我现在想知道如何往往是搜索关键词(“汽车”)出现 在 每个文档,如: abc

  • 问题内容: 我在为elasticsearch实现自动完成功能时遇到问题,这是我的设置: 创建自动完成的分析器 然后,使用“别名”属性中的分析器在自动完成中创建一个类型: 之后; 添加文档: 当我运行以下命令时: 结果是 和 但是我应该在“别名”字段中获取我的文档,我有一个“ bs as”。 我尝试使用API,并得到了我认为是预期令牌的正确答案: 结果: 有什么提示吗? 编辑: 当我用实际类型运行分

  • 我正在使用elasticsearch根据类别页面上的某些标准筛选产品。一种选择是由制造商过滤。用户可以选择制造商名称并获得筛选的ResultSet。我的问题是,尽管映射被定义为“not_analysis”,elasticsearch似乎标记了facet术语。 请参见以下示例: 我的映射如下所示: 以下是我的测试数据: 如果我执行下面的查询,我将得到一个命中,但两个方面的术语: 结果: 我所期望的是

  • 我有一个带有标签列表的文档: 我有一个术语清单: 我想要一个查询,将返回在术语列表中有标签的文档-但没有其他术语。 因此,给定上面的列表,查询将返回,但不返回(因为它有一个术语不在术语列表中)。 我尝试使用过滤器执行查询,如下所示: 但那没用。 如何创建一个查询,在给定术语列表的情况下,该查询将匹配列表中仅包含术语而不包含其他术语的文档?换句话说,所有文档都应该包含一个标签列表,这些标签是所提供的

  • 问题内容: 有没有一种方法可以将条件附加到值数组中? 例如,如果我的文档如下所示: 我想在其后面附加“ item4”和“ item5”。 我必须在2个查询中这样做吗?一个加载当前值列表,然后更新该列表?还是有一种更优雅的方式让我在一个查询中附加这些项目? 我正在尝试使用Elastic4s做到这一点: 为了使用上面的代码片段,我需要启用groovy脚本,而且我不确定如何对多个项目执行此操作。 任何想