【发布时间】:2020-09-25 09:35:30
【问题描述】:
我是 Elastic Search 的新手,我正在尝试对 elasticsearch 索引中对象的每个字段进行精确匹配。例如我有两个对象:
{
"_index": "sql",
"_type": "_doc",
"_id": "mpovsH",
"_score": 1.0,
"_source": {
"entityId": 1,
"user": "userfirst",
"descr": "testfirst",
}
},
{
"_index": "sql",
"_type": "_doc",
"_id": "mpovsH",
"_score": 1.0,
"_source": {
"entityId": 2,
"user": "usersecond",
"descr": "testsecond",
}
}
我想在对象的所有字段上搜索字符串“userfirst”,并且只得到第一个作为响应。我试过了:
var searchResponse = client.SearchAsync<MyObject>(s => s
.Source(sf => sf)
.Query(q => q
.MultiMatch(a => a
.Query(queryValue)))).Result;
其中 queryValue 是“userfirst”,但我在结果中得到了两个对象。我怎样才能改变它?另外,如果可能的话,我不会写每个字段来搜索,因为我的对象要大得多。
编辑:我设法用这个查询只得到一个结果:
var searchResponse = client.SearchAsync<TendersElasticSearch>(s => s
.Source(sf => sf)
.Query(qn => qn
.MatchPhrasePrefix(ma => ma
.Field(x => x.User)
.Query(queryValue)))).Result;
但是通过这个查询,我只能得到字段用户的结果。我想搜索每个对象的所有字段。有什么建议吗?
【问题讨论】:
标签: c# linq elasticsearch nest