gpt4 book ai didi

elasticsearch - Elasticsearch _all 索引

转载 作者:行者123 更新时间:2023-12-03 00:41:46 26 4
gpt4 key购买 nike

我没有得到 THIS示例为什么以下两个查询返回 12 作为结果计数?帖子解释说数据在 _all 中的索引方式是不同的。但它并没有解释它。有人可以帮我理解这一点。

GET /_search?q=2014              # 12 results
GET /_search?q=2014-09-15 # 12 results !

最佳答案

假设您有这样的文件:
{
"name": "John Doe",
"occuptation": "Farmer",
"favorite_ice_cream": "chocolate"
}',
{
"name": "Jane Doe",
"occuptation": "Doctor",
"favorite_ice_cream": "vanilla"
}'

并且还假设最喜欢的冰淇淋领域没有被分析。非分析字段是高度可缓存的并且易于对其执行聚合(因此很容易计算有多少人喜欢巧克力冰淇淋,例如,与 Vanilla 冰淇淋)。但默认情况下不可搜索未分析的字段。

但是......默认情况下,Elasticsearch 会获取文档中的所有字段,将它们一起塞进一个 _all 字段中,然后在 Lucene 中对其进行分析。因此,对于第一个文档,Elastic 将分析字符串“John Doe Farmer Chocolate”,而对于第二个字段,Elasticsearch 将分析“Jane Doe Doctor vanilla”。因此,当您提交与上述类似的查询时,您可以(例如)搜索 GET /_search?q=chocolate并且看到 John Doe 喜欢巧克力冰淇淋。您还可以提交一个查询字符串查询 (https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html) 来搜索 _all 字段并仍然找出谁喜欢巧克力。但是,您不能对最喜欢的冰淇淋字段使用匹配查询……毕竟,我们告诉 Lucene 不要分析该字段。但是,您可以在该字段上使用过滤器并带回所有最喜欢的冰淇淋等于巧克力的文档。

刚开始习惯有点粗糙......但是只要您确保密切关注您正在阅读的文档版本,文档就很好并且不会令人困惑。

此外,如果它有帮助,我喜欢将 _all 字段想象成某种摆脱 jail 的免费卡。很多时候,我可能会选择不分析字段,因为我想在其上运行聚合或应用过滤器。虽然我通常会记忆过滤器需要哪个值,但有时能够向 _all 字段提交搜索并确保...例如,如果我不记得我的“国家”字段是否有“美国”或“美利坚合众国”作为美国的值,我可以快速对 _all 字段执行查询,查看一些文档,然后选择适当的过滤器值。

我使用 _all 字段的另一种方式是在全文搜索中,我希望将某些字段的匹配提高得更高,但我也想搜索文档中的所有字段,以防发生匹配。在这些情况下,针对 _all 的查询字符串查询效果很好。

您可以在此处了解有关 _all 字段的更多信息:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-all-field.html

希望这足以让您入门……您可能不想像现在这样提交简单的查询。可能,您会想要提交使用完整查询 DSL 的 POST 请求。您可以在此处了解更多信息:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-filter-context.html

祝你好运!

关于elasticsearch - Elasticsearch _all 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36250584/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com