我已经找了很多答案,但什么都找不到,所以这是我的问题,我有一个字段“名称”类型字符串的索引,我用match_phrase做了一个简单的全文搜索,但这个字段有时是由逗号、点、斜杠或连字符分隔的几个单词组成的字符串复合词,例如"engineer,operator,maintenance“。我需要排除这些结果,例如,如果我有下一个名称:
如果我搜索"engineer",我想得到最后两个结果,然后导出第一个结果。我试着用这样的“禁止”条款:
"query": {
"bool": {
"must": {
"match_phrase": {
"name": "Vendedor"
}
},
"must_not":{
"match":{
"name": "\."
}
}
}
}我也尝试使用正则表达式,但是它总是给出错误字符的结果:
"must_not":{
"regexp":{
"name": ".*[\-\.\/\.].*"
}
}我做错了什么,或者怎样才能完成这项任务?
发布于 2016-07-13 16:10:24
在索引设置中,您可以添加一个char筛选器和类似的模式,但是您需要重新索引,请在这里查看更多详细信息https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-pattern-analyzer.html。
"char_filter": {
"pattern": {
"pattern": "\\W+",
"type": "pattern_replace",
"replacement": " "
},
"html": {
"type": "html_strip"
}
}https://stackoverflow.com/questions/38356272
复制相似问题