问题标签 [elasticsearch-7]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
elasticsearch - ElasticSearch:嵌套查询未返回所需结果
我是 Elastic Search 的新手,在实现一些查询时遇到了一些问题。以下是我的索引结构
以下是样本数据
我想查询message.dbhistogram
where 中的数据histogramName : controller.pool.ConnectionCreation
。与dbhistogram
Json 对象数组一样,我的目的是仅从数组中检索该对象,该对象通过上述过滤器。
我尝试了以下两个查询:
查询 1
查询 2
我的期望
现实
请建议,我做错了什么?
elasticsearch - 是否在 simple_query_string 中使用模糊性禁用前缀搜索
当在同一个单词上使用simple_query_string
前缀运算符*
和模糊值~N
时,前缀搜索似乎被禁用。
很明显,每当您将模糊度设置为 0 并且查询变为时,前缀都会被禁用,Abcd*~0
然后就没有前缀搜索也没有模糊性。
文档中没有提到这一点,所以我不确定我是否做错了。
我试过了:
- 交换运算符顺序:
Abcd~2*
-- 在_explain
这引入了模糊变化,但省略了前缀运算符 - 使用括号作为优先级:
(Abcd*)~2
-- 在_explain
此使用前缀但省略了模糊运算符1 - 复制这个词:
(Abcd* Abcd~2)
——这行得通,它显然显示了两个查询的重聚,而不是两个效果的组合2。
1我假设在这种情况下~2
不应将其解释为 SLOP 运算符,因为没有短语(没有引号)。
2我可以理解,合成这些效果可能会产生太多可能的变体——模糊添加 50 个变体,然后对每个变体进行前缀搜索,即
java - 获取所有记录,包括特定字段
我正在使用 Elasticcsearch 7.3。我只想从我的索引中使用 JAVA Api 获取所有文档的两条记录。我正在使用以下代码,但它返回空对象。
我只需要在结果中包含两个字段recipe_ID和recipe_url。
elasticsearch - ElasticSearch:存在模板时将文档插入 ElasticSearch 索引的奇怪问题
我正在尝试在 ElasticSearch 中进行一些测试。我能够根据需要填充所有内容,但是每当我尝试放置项目的默认模板然后插入时,数据不会被摄取到索引中(尽管 http 调用是成功的)。
经过检查,我意识到即使使用 elasticSearch 的默认模板,我也无法插入一个简单的文档。例如插入 ES 文档中的模板:
然后index = "bark"
通过
在索引中添加一个文档,但没有关于host_name
. 只需将索引名称更改为该模板不适用的名称(例如index = dark
),就会添加一个包含host_name
. 显示复制的索引数据:
(当index=bark
)
(当index=dark
)
请注意_source":{"host_name":"generic_name"}
前者中没有该字段?
为此可以做些什么?如果有人遇到此问题或知道解决方法,请提供帮助。
php - 了解 Elasticsearch 配置文件 API 输出
我已经索引了 200 万个文档,并且我试图一次返回所有匹配的文档 ID。我使用 PHP 客户端。
我的映射如下:
我的查询字符串如下:
我的个人资料 API 输出如下:
目标是一次获取所有匹配的文档。我只需要文档 ID(检查给定术语是否存在于文档中)所以我使用 index_options 作为文档。我了解滚动 API,但我想使用 max_result_window。我只使用一个分片,没有副本,并且在执行搜索操作时也避免了对文档进行评分。
我的问题如下:
我只想检索文档 ID 并避免文档获取阶段,所以我禁用了源字段。为了避免其他元数据,我按照此链接尝试了 "stored_fields": " none ", "docvalue_fields": ["_id"] 以避免获取阶段。但我仍然可以看到文档类型和索引名称。我需要做些什么来仅获取文档 ID 并避免获取阶段吗?
由于我正在检索所有匹配的文档评分与我无关,所以我使用了过滤器子句,但我想知道为什么我在下面的配置文件 API 结果中得到 boostquery 时间?但你也可以注意到,布尔查询得分时间为零!
为了知道布尔查询搜索仅在 Lucene 索引上花费了多少时间,我应该只花布尔查询报告的时间,还是需要将其所有子项(术语查询)时间相加?因为当我添加所有这些术语查询时间时,它高于布尔查询报告的时间。这有什么可能的原因吗?
我是否还需要为我的布尔查询计时包括收集器,因为在配置文件 api 中,据说“Lucene 通过定义一个“收集器”来工作,该收集器负责协调匹配文档的遍历、评分和收集。“。它还说“需要注意的是,收集器时间独立于查询时间。它们是独立计算、组合和标准化的!由于 Lucene 执行的性质,不可能将收集器中的时间“合并”到查询部分,因此它们显示在单独的部分中”。据我了解,它有助于遍历Lucene索引的posts列表来执行布尔查询操作。我在这方面是对的吗?
是否有任何类似的 API 用于调查 Elasticsearch 中的索引时间?我能够在设置 API 中获得索引时间,但我正在寻找类似于配置文件 API 的东西?
elasticsearch - 如何更新 ElasticSearch search_analyzer 映射而不会在分析器上发生冲突?
我正在使用 7.7 版的 ElasticSearch、LogStash 和 Kibana 并尝试更新字段的索引映射会导致 2 个错误之一:
mapper_parsing_exception: analyzer on field [title] must be set when search_analyzer is set
illegal_argument_exception: Mapper for [title] conflicts with existing mapping:\n[mapper [title] has different [analyzer]]
这是我正在尝试的操作。如果我删除"analyzer": "standard"
,我会收到第一个错误。如果我把它留在里面,我会得到第二个错误。
但是,当我使用 获取映射时GET /my_index/_mapping
,我没有看到任何定义的分析器:
额外信息
这是我设置“同义词”搜索分析器的方法,但我认为这无关紧要:
elasticsearch - 从 5.5 到 7.7 的 ElasticSearch 中 _type 的使用
我们正在从 5.5 迁移到 7.7,其中“index”只有一个“_type”。在 5.5 中,“index”将有多个“_type”,我们正在根据当前结构更改数据结构elastic search 7.7 这意味着每个索引都有一种类型。
今年晚些时候,我们将弹性搜索服务器从 7.7 升级到 8,
此外,我们正在使用 Java 传输客户端,这是 7.8 中的 EOL,并将转移到客户端的 Rest 客户端。
目前,我们在 7.7 版本中将单个“_type”映射到“index”,根据文档,我看到它将在版本 8 中变为无类型。那么添加 _type 的最佳方法是什么,或者有没有办法删除类型使用7.7这样我们就不需要在弹性搜索服务器端对8版本做任何改动了。
谢谢,
哈利
elasticsearch - ES7 - 如何建模 1-n 父子关系 - 不同的 ES 类型
我正在将旧的 ES 实例迁移到 ES7。我们需要 1-n 个父子关系。
我们曾经在同一个索引中有多种类型,这很容易。有些类型通过_parent
.
但是 ES7 将只允许单一类型的索引。这让我觉得我会将旧类型转换为单独的索引。
我阅读了文档,他们建议将其join
用于父子关系,但是这些似乎仅适用于属于单个索引的文档。
https://www.elastic.co/blog/removal-of-mapping-types-elasticsearch
因此,如果我将以前的类型转换为单独的索引,在我的理解join
中将无济于事。
那么在 ES7 中对不同类型(或者我应该说是索引)之间的父子关系建模的正确解决方案是什么?
或者也许我不应该在 ES7 中将我的数据建模为单独的类型/索引。但在那种情况下,如何解决这个问题?
提前致谢
elasticsearch - 在 Elasticsearch 7.7 版中跨多个索引进行查询
在elasticsearch 7.7版本中,索引中的多个_types被删除了,现在如果我们想跨多个索引进行查询,我们是通过以下方式进行的。
在 7.7 中,使用 Transport Java API 从多个索引中查询的最佳方式是什么?
编辑:
1)假设我有两个索引,“用户”和“推文”我想同时搜索索引 - 用户和推文,如下所示
如果我想查询字段上的“用户”索引为 {“username”=“ Opster ”} 并在字段上的“ tweet ”索引中查询为 {“data”=“ some_text ”}
这可能吗?
2) 我知道,每个索引在弹性搜索中都是一个单独的分区,但是跨索引的搜索如何在弹性搜索内部工作?
谢谢,
哈利
elasticsearch - 弹性搜索中的父加入未按预期搜索
我们最近从elasticsearch 5.5版本迁移到7.7elasticsearch 7.7
版本去掉了多种类型的概念,所以我们使用JOIN数据类型来映射用户和tweet之间的关系,如下所示
https://www.elastic.co/guide/en/elasticsearch/reference/current/parent-join.html
所以用户是父母,推文是孩子
我的推特索引在用户和推文的组合中有 100 万个条目,当我使用 hasParentQuery / hasChildQuery 时,它按预期工作,我得到了正确的结果。
但是当我尝试只查询 twitter 索引中的父级(即)在这种情况下,我只想搜索twitter 索引中的用户,我查询如下
twitter 索引有 100 万条记录,其中包含 50K 用户条目,并保留为推文。此查询与搜索整个索引 的时间相同(有/没有将 my_join_field 作为用户传递)。
我做错了什么?任何帮助表示赞赏!