我一直在尝试使用NEST客户端进行弹性搜索,但在对包含特殊/保留字符(例如'/'
)的术语进行过滤时似乎遇到了障碍下面是我的模型的JSON表示..
"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\" } }")
);
答案 0 :(得分:1)
您需要设置多字段,因为短划线导致条款被拆分。我找到了一个回答你的类似问题的答案:https://stackoverflow.com/a/28859145/4134821