假设存在ElasticSearchMap:
"mappings": {
"dynamic_templates": [],
"properties": {
"name": {
"type": "text",
"fields": {
"x": {
"type": "completion"
},
"y": {
"type": "keyword"
},
"z": {
"type": "text",
"analyzer": "shingles",
"fielddata": true
}
}
如何从轻松脚本访问name.x/y/z
数据/令牌?
以下不起作用:
ctx._source.name.x
ctx._source['name.fields.x']
ctx._source['name.x']
1条答案
按热度按时间eh57zj3b1#
哦,我明白了,你想把
name.z
中产生的任何东西都反馈到name.x
中。首先,我认为你认为多字段工作的方式有一个误解。你只需要指定name
字段的值,每个子字段都会根据它的类型/分析器得到一个值。但是您不能直接为这些子字段中的任何一个指定值。您应该做的是在完成字段中直接指定
shingles
分析器,这样应该可以了。你想做的事情是不可能自动完成的,也不能使用多字段,你需要一个独立的
completion
字段,而不是name
的子字段。你想做的过程可以这样做,但需要在客户端编码: