elasticsearch ElasticSearch嵌套多重匹配返回所有结果,elasticsearch,nest,elasticsearch,Nest" /> elasticsearch ElasticSearch嵌套多重匹配返回所有结果,elasticsearch,nest,elasticsearch,Nest" />

elasticsearch ElasticSearch嵌套多重匹配返回所有结果

elasticsearch ElasticSearch嵌套多重匹配返回所有结果,elasticsearch,nest,elasticsearch,Nest,我有一个C#代码,使用multi-matchElastic搜索类型来匹配两个字段。我正在使用NEST软件包 var response = await _elasticClient.SearchAsync<FileDocument>( s => s.Query(q => q.MultiMatch(c => c .Fields(f => f.Field(p => p.FileName).Field(query)) .Fields

我有一个C#代码,使用
multi-match
Elastic搜索类型来匹配两个字段。我正在使用NEST软件包

var response = await _elasticClient.SearchAsync<FileDocument>(
     s => s.Query(q => q.MultiMatch(c => c
     .Fields(f => f.Field(p => p.FileName).Field(query))
     .Fields(f => f.Field(p => p.Metadata).Field(query))
     )));
var response=await\u elasticClient.SearchAsync(
s=>s.Query(q=>q.MultiMatch(c=>c
.Fields(f=>f.Field(p=>p.FileName).Field(查询))
.Fields(f=>f.Field(p=>p.Metadata).Field(查询))
)));

问题是无论我传入什么文本,它都会返回所有结果。我遗漏了什么?

为了有效地调试这些类型的问题,您需要检查发送到Elasticsearch的HTTP请求,最终您的查询生成器将转换为搜索JSON,并针对Elasticsearch执行

我不知道
nest
,但已经编写了for Java代码,它以JSON格式打印Elasticsearch查询


尽管我的猜测是,您没有发送正确的HTTP方法,该方法应该是
POST
,并且您可能会使用
GET
发送该方法,这会导致ES忽略您的搜索查询并返回所有文档。

为了有效地调试这些类型的问题,您需要检查前往Elasticsearch的HTTP请求,最终您的查询生成器将转换为搜索JSON,并针对Elasticsearch执行

我不知道
nest
,但已经编写了for Java代码,它以JSON格式打印Elasticsearch查询


虽然我的猜测是,您没有发送正确的HTTP方法,该方法应该是
POST
,您可能是使用
GET
发送的,这会导致ES忽略您的搜索查询并返回所有文档。

在添加
后解决。query(query)

var response=await\u elasticClient.SearchAsync(
s=>s.Query(q=>q.MultiMatch(c=>c
.Fields(f=>f.Field(p=>p.FileName).Field(p=>p.Metadata))
.Query(查询)
))
);

参考-

添加
后解决。查询(Query)

var response=await\u elasticClient.SearchAsync(
s=>s.Query(q=>q.MultiMatch(c=>c
.Fields(f=>f.Field(p=>p.FileName).Field(p=>p.Metadata))
.Query(查询)
))
);

参考-

谢谢。我意识到我错过了
.Query(Query)
谢谢。我意识到我错过了
.Query(Query)
你可以在一段时间后标记它的答案,这样它对社区会有帮助,也可以标记你如何调试并发现它丢失的任何指针:)你可以在一段时间后标记它的答案,这样它对社区会有帮助,也可以标记你如何调试并发现它丢失的任何指针:)
var response = await _elasticClient.SearchAsync<FileDocument>(
                 s => s.Query(q => q.MultiMatch(c => c
                 .Fields(f => f.Field(p => p.FileName).Field(p=>p.Metadata))
                 .Query(query)
                 ))
                 );