gpt4 book ai didi

elasticsearch - 如何使用NEST与ElasticSearch进行引导匹配

转载 作者:行者123 更新时间:2023-12-03 00:38:57 24 4
gpt4 key购买 nike

我有ES文档,其中字段是Guid。

当我尝试进行比赛时,破折号对我的搜索造成了严重破坏,并且我得到了一堆无关的局部比赛。

由于此字段是向导,因此始终需要完全匹配。

在Kibana中,我可以将guid括在引号中,并获得完全匹配的内容。使用NEST,引用无济于事。我也曾尝试躲过破折号,但没有成功。

我需要按原样存储guid,因为在某些情况下,我必须检索完整无缺的guid的文档,因此无法删除其中的破折号。

是否可以使用NEST标记该字段,以便在查询时仅返回完全匹配的内容?

编辑:
按照下面的答案,这是我所做的:

  • 我在[guid]字段
  • 中添加了[Nest.Keyword]
  • 我这样查询:
    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

  • 但这不会返回任何内容。

    flex 站点的文档提供了一个示例( https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/terms-query-usage.html):
    q
    .Terms(c => c
    .Name("named_query")
    .Boost(1.1)
    .Field(p => p.Description)
    .Terms("term1", "term2")
    )

    对于单个字段,我找不到任何有关Name方法的文件,而且我做的事情似乎很相似,所以我不知道它对我的情况有什么影响(如果有)。

    从Kibana看到的我的 Realm 的映射为:
     "mapping": {
    "pictureobject": {
    "properties": {
    "AlbumId": {
    "type": "text",
    "fields": {
    "keyword": {
    "type": "keyword",
    "ignore_above": 256
    }
    }
    }

    最佳答案

    Guid映射为 keyword type,并使用词级查询(例如 term query)查找完全匹配的内容。

    关于elasticsearch - 如何使用NEST与ElasticSearch进行引导匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53620734/

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