字段中的大写字母导致弹性搜索中的查询失败
Capital letters in field causing query to fail in elasticsearch
我有一个查询,用于搜索包含某些值的成绩单。它应该匹配属于特定租户的每个文档。该查询在其术语过滤器没有大写字母时有效,但在有大写字母时失败。
我是否应该将租户 ID 编码为仅使用小写字母的格式?或者有没有办法使术语过滤器(或一些类似的过滤器)区分大小写?或者我是否需要在 tenant_id
字段上启用某些选项以保留其大小写?
{
'query': {
'bool': {
'must': [{'match': {'transcript': 'hello, world!'}}],
'filter': [
{'term': {'tenant_id': 'XRqtv5O91WEEt'}}
]
}
}
}
尝试使用 match
而不是 term
:
{
'query': {
'bool': {
'must': [{'match': {'transcript': 'hello, world!'}}],
'filter': [
{'match': {'tenant_id': 'XRqtv5O91WEEt'}}
^^^^^
]
}
}
}
或者,您可以保留 term
,但改用 keyword
子字段(如果映射中存在这样的字段)
{
'query': {
'bool': {
'must': [{'match': {'transcript': 'hello, world!'}}],
'filter': [
{'term': {'tenant_id.keyword': 'XRqtv5O91WEEt'}}
^^^^^^^^
]
}
}
}
我有一个查询,用于搜索包含某些值的成绩单。它应该匹配属于特定租户的每个文档。该查询在其术语过滤器没有大写字母时有效,但在有大写字母时失败。
我是否应该将租户 ID 编码为仅使用小写字母的格式?或者有没有办法使术语过滤器(或一些类似的过滤器)区分大小写?或者我是否需要在 tenant_id
字段上启用某些选项以保留其大小写?
{
'query': {
'bool': {
'must': [{'match': {'transcript': 'hello, world!'}}],
'filter': [
{'term': {'tenant_id': 'XRqtv5O91WEEt'}}
]
}
}
}
尝试使用 match
而不是 term
:
{
'query': {
'bool': {
'must': [{'match': {'transcript': 'hello, world!'}}],
'filter': [
{'match': {'tenant_id': 'XRqtv5O91WEEt'}}
^^^^^
]
}
}
}
或者,您可以保留 term
,但改用 keyword
子字段(如果映射中存在这样的字段)
{
'query': {
'bool': {
'must': [{'match': {'transcript': 'hello, world!'}}],
'filter': [
{'term': {'tenant_id.keyword': 'XRqtv5O91WEEt'}}
^^^^^^^^
]
}
}
}