elasticsearch 如何使用NEST与ElasticSearch进行guid匹配
我有一个ES文档,其中一个字段是guid 当我尝试进行匹配时,破折号在我的搜索中造成了严重破坏,我得到了一堆不相关的部分匹配 由于此字段是guid,因此始终需要精确匹配 在Kibana中,我可以将guid用引号括起来,得到精确的匹配;对于NEST,引号没有帮助。我也曾试图逃避这些冲击,但没有成功 我需要按原样存储guid,因为在某些情况下,我必须以完整的guid检索文档,因此无法删除其中的破折号 有没有办法用NEST标记该字段,以便在查询时只返回完全匹配的字段elasticsearch 如何使用NEST与ElasticSearch进行guid匹配,elasticsearch,nest,elasticsearch,Nest,我有一个ES文档,其中一个字段是guid 当我尝试进行匹配时,破折号在我的搜索中造成了严重破坏,我得到了一堆不相关的部分匹配 由于此字段是guid,因此始终需要精确匹配 在Kibana中,我可以将guid用引号括起来,得到精确的匹配;对于NEST,引号没有帮助。我也曾试图逃避这些冲击,但没有成功 我需要按原样存储guid,因为在某些情况下,我必须以完整的guid检索文档,因此无法删除其中的破折号 有没有办法用NEST标记该字段,以便在查询时只返回完全匹配的字段 编辑: 下面是我的回答: 我在
编辑: 下面是我的回答:
- 我在guid字段中添加了[Nest.Keyword]
- 我这样问:
我找不到任何关于Name方法的文档,我所做的似乎与之类似,对于单个字段,因此我不知道它对我的案例有什么影响(如果有的话) 从Kibana看,我的领域的地图是:var R = await _ElasticClient.SearchAsync<PictureObject>(Sr => Sr .Query(Q => Q.Term(Te => Te .Field(F => F.AlbumId) <- the guid field .Value(IdString)); <- my value
"mapping": { "pictureobject": { "properties": { "AlbumId": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }
,将
映射为,并使用术语级查询,如查找精确匹配。将Guid
映射为,并使用术语级查询,如查找精确匹配。我迟到了,但您可以使用匹配短语方法,如以下示例:Guid
await _elasticClient.SearchAsync<Employee>( s => s.Index(IndexName).Query( q => q.MatchPhrase(tq => tq.Field(x => x.DepartmentId).Query(dep.Id.ToString())))
我参加聚会迟到了,但您可以使用以下示例中的匹配短语方法:wait\u elasticClient.SearchAsync( s=>s.Index(IndexName).Query( q=>q.MatchPhrase(tq=> tq.Field(x=>x.DepartmentId.Query(dep.Id.ToString()))
await _elasticClient.SearchAsync<Employee>( s => s.Index(IndexName).Query( q => q.MatchPhrase(tq => tq.Field(x => x.DepartmentId).Query(dep.Id.ToString())))
我已经用关键字编辑了问题和我所做的测试type@Thomas使用wait\u elasticClient.SearchAsync( s=>s.Index(IndexName).Query( q=>q.MatchPhrase(tq=> tq.Field(x=>x.DepartmentId.Query(dep.Id.ToString()))
作为字段。你的意思是什么?这就是(F=>F.AlbumId)是吗?@Thomas您已经在POCO上编辑了属性映射,但这不会影响Elasticsearch中已经存在的映射,Elasticsearch已经将字段映射为带有AlbumIb.keyword
关键字
子字段的
数据类型。对映射的大多数更改无法对已经存在的映射进行,因此您需要使用所需的映射创建一个新索引,然后将文档索引到其中。但是,正如@NishantSaini所指出的,您已经有了一个文本
关键字
子字段可供使用。要实现这一目标,您可以使用
使用字段(F=>F.AlbumId.Suffix(“关键字”))
查询。@Thomas我建议您阅读一下映射文档,因为我认为它在这里会有所帮助:我已经使用关键字编辑了这个问题type@Thomas使用术语
作为字段。你的意思是什么?这就是(F=>F.AlbumId)是吗?@Thomas您已经在POCO上编辑了属性映射,但这不会影响Elasticsearch中已经存在的映射,Elasticsearch已经将字段映射为带有AlbumIb.keyword
关键字
子字段的
数据类型。对映射的大多数更改无法对已经存在的映射进行,因此您需要使用所需的映射创建一个新索引,然后将文档索引到其中。但是,正如@NishantSaini所指出的,您已经有了一个文本
关键字
子字段可供使用。要实现这一目标,您可以使用
使用字段(F=>F.AlbumId.Suffix(“关键字”))
查询。@Thomas我建议您阅读一下映射文档,因为我认为它在这里会有所帮助:术语