C# NEST ElasticSearch.NET转义特殊字符
我一直在尝试使用NEST客户端进行弹性搜索,但在筛选包含特殊/保留字符(如“/”的术语时,似乎遇到了障碍 下面是我的模型的JSON表示C# NEST ElasticSearch.NET转义特殊字符,c#,
elasticsearch,nest,C#,
elasticsearch,Nest,我一直在尝试使用NEST客户端进行弹性搜索,但在筛选包含特殊/保留字符(如“/”的术语时,似乎遇到了障碍 下面是我的模型的JSON表示 "categories": { "count": 1, "default": "root/Hello/World/Category", } 当提交对categories.default字段的任何部分(例如“root”或“Hello”)的搜索时,我将收到一个匹配项,但是当搜索完整字符串或任何包含“/”的字符串时,找不到匹配项 我从一些研究中了解到
"categories": {
"count": 1,
"default": "root/Hello/World/Category",
}
当提交对categories.default字段的任何部分(例如“root”或“Hello”)的搜索时,我将收到一个匹配项,但是当搜索完整字符串或任何包含“/”的字符串时,找不到匹配项
我从一些研究中了解到,这是因为在索引/标记化过程中,保留字符被替换了,但是我还无法确定解决这个问题的方法
任何帮助都将不胜感激
下面添加了示例搜索查询
var result = ElasticSearchClient.Search<Schema.Product>(s => s
.From(0)
.Size(10)
.MatchAll()
.FilterRaw("{ \"term\": { \"categories.default\": \"root/Hello\" } }")
);
var result=ElasticSearchClient.Search(s=>s
.从(0)
.尺寸(10)
.MatchAll()
.FilterRaw(“{\”term\“:{\”categories.default\“:\”root/Hello\“}}”)
);
由于破折号导致术语被拆分,您需要设置多字段。我找到了一个类似问题的答案,这个问题也回答了你的问题:NEST是否是问题还不完全清楚。我怀疑您的字符串分析器可能在/
上拆分,从而使您的匹配与您预期的不同(我希望您可以匹配四个术语,根
,你好
,世界
,和类别
)。您能在问题中包括您的映射和查询吗?这将有助于快速发现问题我几乎可以肯定这是事实,因为我没有使用任何特殊映射(除了嵌套库中的自动映射)。我确实看了索引分析器,但不确定我需要使用哪一个来强制进行完全匹配(理想情况下,我希望按类别或url进行筛选),谢谢。这正是我想要的