我有一个带有文本字段的索引。
"state": {
"type": "text"
}
现在假设有两个数据。
"state": "vail"
and
"state": "eagle vail"
根据我的要求之一,
- 我需要做一个术语级别的查询,这样如果我输入“vail”,搜索结果应该只返回带有“vail”而不是“eagle vail”的状态。
但是对同一索引进行不同搜索的另一个要求是, - 我需要对全文搜索进行匹配查询,这样如果我输入“vail”,也会显示“eagle vail”。
所以我的问题是,如何在这个字段中进行术语级别和全文搜索,就像进行术语级别查询一样,我必须将其设置为“关键字”类型,以便不进行分析。 / p>
答案 0 :(得分:1)
您可以使用"多字段"实现这一目标的功能。这是一个映射:
{
"mappings": {
"my_type": {
"properties": {
"state": {
"type": "text",
"fields": {
"raw": {
"type": "keyword"
}
}
}
}
}
}
}
在这种情况下,state
将充当text
字段(已标记化),而state.raw
将为keyword
(单令牌)。索引文档时,只应设置state
。将自动创建state.raw
。