NEST ElasticSearch.NET Escape特殊字符

时间:2015-06-23 02:34:06

标签: c# elasticsearch nest

我一直在尝试使用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\" } }")
);

1 个答案:

答案 0 :(得分:1)

您需要设置多字段,因为短划线导致条款被拆分。我找到了一个回答你的类似问题的答案:https://stackoverflow.com/a/28859145/4134821