NEST ElasticSearch.NET 转义特殊字符

NEST ElasticSearch.NET Escape Special Characters

我一直在尝试将 NEST 客户端用于 Elastic Search,但在过滤包含 special/reserved 个字符(例如 '/'

的字词时似乎遇到了障碍

下面是我的模型的 JSON 表示..

"categories": {
    "count": 1,
    "default": "root/Hello/World/Category",
}

当提交对 categories.default 字段的任何部分的搜索时,例如 "root" 或 "Hello" 我将收到一个匹配项,但是当搜索完整字符串或任何未找到包含“/”的字符串。

我从一些研究中了解到,这是因为在 indexing/tokenisation 过程中替换了保留字符 - 但是我还无法确定解决该问题的方法。

如有任何帮助,我们将不胜感激

下面添加了示例搜索查询

var result = ElasticSearchClient.Search<Schema.Product>(s => s
    .From(0)
    .Size(10)
    .MatchAll()
    .FilterRaw("{ \"term\": { \"categories.default\": \"root/Hello\" } }")
);

您需要设置一个多字段,因为破折号会导致术语拆分。我找到了一个类似问题的答案,它回答了你的问题: