elasticsearch - 带有逗号值的弹性搜索匹配查询不起作用
问题描述
嗨,我们希望支持一个归档类别的部分搜索和完全匹配。
这是 category 的映射,我们使用fields.raw实现了这一点
"category": {
"properties": {
"name": {
"type": "string",
"analyzer": "autocomplete",
"search_analyzer": "standard",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
一切都按预期工作,我可以进行精确搜索和部分搜索。但是当我在数据中有字符逗号“,”时,完全匹配不起作用。 我正在搜索未分析的 category.name.raw
{ "query": {
"filtered": {
"query": {
"bool": {
"must": [
{
"multi_match": {
"query": "",
"type": "cross_fields",
"fields": [
"filed1",
"field2^12"
]
}
},
{
"match": {
"category.name.raw": " Poverty, Poor and Hunger"
}
}
]
}
}
}}}
我没有得到任何结果,我不确定我做错了什么,请帮我解决这个问题。提前致谢
解决方案
尝试使用以下分析器:
"lower_whitespace" : {
"filter" : [
"lowercase"
],
"type" : "custom",
"tokenizer" : "whitespace"
}
有关标记器的更多详细信息,请查看以下内容: https ://www.elastic.co/guide/en/elasticsearch/reference/5.1/analysis-whitespace-analyzer.html
看来您使用的是 Elastic search 的旧版本,考虑升级将是一个好主意
推荐阅读
- android - 使用非默认 FirebaseApp 初始化 FirebaseMessage 和 FirebaseAnalytics
- git - 解决 Tableau 工作簿 TWB 文件中的 GIT 合并冲突
- regex - Symfony4 在使用带有 slug 生成的函数请求 actor_show 时出现消息错误
- python-pptx - How to alter a presentation to display all texts in upper case?
- java - 在服务器-客户端套接字通信方面需要一些帮助
- python-3.x - 从 csv 文件中提取特定列,并使用 Python 转换为 Lambda 中的字符串
- python - 在 python 中使用 Seaborn 进行配对分布
- android - 如何获得半透明状态栏?
- java - 如何使用 Spring Data Mongo DB 仅检索文档的特定字段?
- java - 循环构造函数对象循环java