我按照文档https://www.elastic.co/guide/en/elasticsearch/guide/current/multi-fields.html为名称字段添加了排序列。不幸的是,它无法正常工作
以下是步骤:
PUT /staff { "mappings": { "staff": { "properties": { "id": { "type": "string", "index": "not_analyzed" }, "name": { "type": "string", "fields": { "raw": { "type": "string", "index": "not_analyzed" } } } } } } }
POST /staff/list { "id": 5, "name": "abc" }
POST /staff_change/_search { "sort": "name.raw" }
但是,响应中的排序字段返回 null
"_source": {
"id": 5,
"name": "abc"
},
"sort": [
null
]
}
我不知道为什么它不起作用,我无法搜索与此相关的相关问题文档。是否有人遇到过这个问题
非常感谢提前
答案 0 :(得分:2)
您的映射不正确。您可以在索引staff
内创建映射staff
,然后在索引list
内的映射staff
下索引文档,这些文档可以使用动态映射,而不是您添加的映射。最后,您要搜索索引staff
中的所有文档。试试这个:
PUT /staff
{
"mappings": {
"list": {
"properties": {
"id": {
"type": "string",
"index": "not_analyzed"
},
"name": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
}
然后索引:
POST /staff/list {
"id": 5,
"name": "abc aa"
}
并查询:
POST /staff/list/_search
{
"sort": "name.raw"
}
结果:
"hits": [
{
"sort": [
"abc aa"
]
}
...