【发布时间】:2019-09-24 03:51:34
【问题描述】:
所以在 DB 我有这个条目:
Mark-Whalberg
用词搜索时
Mark-Whalberg
我不匹配。
为什么?减号是我理解的特殊字符吗?象征着“排斥”?
查询是这样的:
{"query_string": {"query": 'Mark-Whalberg', "default_operator": "AND"}}
搜索其他所有内容,例如:
Mark
Whalberg
hlb
Mark Whalberg
返回一个匹配项。
这是存储为两个不同的部分吗?在搜索词中包含减号时如何获得匹配?
-------------编辑--------------
这是当前查询:
var fields = [
"field1",
"field2",
];
{"query_string":{"query": '*Mark-Whalberg*',"default_operator": "AND","fields": fields}};
【问题讨论】:
-
如果这是 ES 5 并且您使用的是默认映射,只需在
.keyword子字段上尝试term查询:"term": {"field_name.keyword": "Mark-Whalberg"} -
否则您需要一个
.keyword子字段:-) 来保留破折号和大小写文本。 -
你的意思是这样的:{"query_string": {"query": 'Mark-Whalberg', "default_operator": "AND","term": {"field_name.keyword": " Mark-Whalberg"}}} 我在查询中遇到错误。我需要保留 query_string,因为有不同的搜索方式。
-
几个字段是什么意思?您需要在问题中更加明确。如果没有提供一些信息(您的索引映射、示例数据、所需的输出),很难为您提供帮助。
-
好吧,你错过了映射;-),但没关系。我看到@Mickaël-B 正在简短地解释分析器的故事如何在 ES 中进行。
标签: elasticsearch