在我的文档中,我将以下文本编入索引作为关键字
80TL00ABM/256GB SSD
现在,搜索此内容的最佳方式是什么?
我尝试使用Match query和Match phrase prefix,但两者都要求我搜索整个单词,而不仅仅是80TL00ABM
此外,如果我不将其作为关键字索引,那么我无法使用整个字符串进行搜索,因为/
Indexed with:
type: keyword
normalizer: char_filter: [], filter: [lowercase]
答案 0 :(得分:0)
POST _search
{
"query": {
"term" : { "FIELD" : "80tl00abm/256gb ssd" }
}
}
匹配查询适用于文本字段。对于关键字字段,最好使用术语查询。请注意,搜索的字符串是小写的,因为您使用了一个小写关键字
的规范化器答案 1 :(得分:0)
您可能想要使用multi-fields。这允许您将相同的字段索引两次,使用不同的索引时间分析器,可以在进行搜索时为您提供灵活性。例如:
{
"mappings": {
"mytype": {
"properties": {
"myfield": {
"type": "keyword",
"fields": {
"analyzed": {
"type": "text"
}
}
}
}
}
}
}
将“myfield”索引两次,一次作为使用术语查询的完全匹配的关键字,一次作为文本,使用匹配查询。
此术语查询将对关键字字段进行操作:
{
"query": {
"term": {
"myfield": "80TL00ABM/256GB SSD"
}
}
}
此匹配查询将在分析的字段上运行。请注意用于执行搜索的字段名称的差异:
{
"query": {
"match": {
"myfield.analyzed": "80TL00ABM"
}
}
}
如其他答案中所述,请注意您使用的小写过滤器,以便在使用术语查询时提供正确的大小写。