【发布时间】:2021-06-21 20:18:18
【问题描述】:
我想对 3 个字段执行部分搜索:UUID、tracking_id 和 zip_code。它们只包含 1 个单词,除了 UUID 的连字符外没有特殊字符/空格。 我不确定是否应该使用 search_as_you_type 或 edge ngram tokenizer 或 edge ngram token filter,所以我先尝试了 search_as_you_type。
我已经创建了这个索引:
{
"settings": {
"index": {
"sort.field": [ "created_at", "id" ],
"sort.order": [ "desc", "desc" ]
}
},
"mappings": {
"properties": {
"id": { "type": "keyword", "fields": { "raw": { "type": "search_as_you_type" }}},
"current_status": { "type": "keyword" },
"tracking_id": { "type": "wildcard" },
"invoice_number": { "type": "keyword" },
"created_at": { "type": "date" }
}
}
}
并插入此文档:
{
"id": "SIGRID",
"current_status": "unassigned",
"tracking_id": "AXXH",
"invoice_number": "xxx",
"created_at": "2021-03-24T09:36:10.717672467Z"
}
我发送了这个查询:
{"query": {
"multi_match": {
"query": "sigrid",
"type": "bool_prefix",
"fields": [
"id"
]
}
}
}
这不返回结果,但 SIGRID, S, SIG 返回结果。如何使 search_as_you_type 查询不区分大小写?我应该改用边缘 ngram 标记器吗?谢谢
【问题讨论】:
-
我的错,实际上 search_as_you_type 不区分大小写,我只需要输入字段:id.raw 或根本不输入字段
标签: elasticsearch indexing tokenize