gpt4 book ai didi

elasticsearch - 没有指定字段的简单查询在整个 ElasticSearch 索引中搜索

转载 作者:行者123 更新时间:2023-12-02 22:15:54 24 4
gpt4 key购买 nike

假设我们有一个 ElasticSearch 实例和一个索引。我现在想在整个索引中搜索包含特定值的文档。它与在多个字段上搜索此查询相关,因此我不想指定要搜索的每个字段。

到目前为止,我的尝试(使用 NEST)如下:

var res2 = client.Search<ElasticCompanyModelDTO>(s => s.Index("cvr-permanent").AllTypes().
Query(q => q
.Bool(bo => bo
.Must( sh => sh
.Term(c=>c.Value(query))
)
)
));

但是,上面的查询结果是一个空查询:

在我的连接字符串上应用以下调试后,我得到以下输出,### ES REQEUST ### {}:

.DisableDirectStreaming()
.OnRequestCompleted(details =>
{
Debug.WriteLine("### ES REQEUST ###");
if (details.RequestBodyInBytes != null) Debug.WriteLine(Encoding.UTF8.GetString(details.RequestBodyInBytes));
})
.PrettyJson();

我该怎么做?为什么我的查询是错误的?

最佳答案

您的问题是您必须指定一个字段作为 TermQuery 的一部分进行搜索。事实上,所有 ElasticSearch 查询都需要将一个或多个字段指定为查询的一部分。如果您想搜索文档中的每个字段,您可以使用内置的“_all”字段(除非您在映射中禁用了它。)

您应该确定您也确实需要 TermQuery,因为它只会匹配文本中的精确字符串。这种类型的查询通常用于查询简短的、未分析的字符串字段(例如,包含美国州缩写等已知值枚举的字段。)

如果您想查询更长的全文字段,请考虑使用 MultiMatchQuery(它也允许您指定多个字段。)

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html

关于elasticsearch - 没有指定字段的简单查询在整个 ElasticSearch 索引中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49209019/

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