我有一个索引的映射,我正在进行建议/自动完成查找和响应。
"mappings": {
"listing": {
"_source": {
"enabled": false
},
"dynamic": false,
"properties": {
"_all": {
"enabled": false
},
"listingTitle": {
"type": "completion",
"index_analyzer": "str_index_analyzer",
"search_analyzer": "str_search_analyzer"
},
"address": {
"dynamic": false,
"properties": {
"city": {
"type": "completion",
"index_analyzer": "str_index_analyzer",
"search_analyzer": "str_search_analyzer"
},
"stateOrProvince": {
"type": "completion",
"index_analyzer": "str_index_analyzer",
"search_analyzer": "str_search_analyzer"
}
}
}
}
}
}
这是请求的端点和数据:site.dev:9200/listingsuggest/_suggest
{
"result": {
"text": "Minn",
"completion": {
"field": "address.city"
}
}
}
所以这适用于查找匹配以Minn开头的城市的文档。我遇到的问题是我还想返回匹配" Minn"的每个文档的stateOrProvince字段值。例如,我的结果集返回以下匹配的单词:
Minneapolis
Minnetonka
我需要它做的是返回:
Minneapolis, MN
Minnetonka, MN
目前的完整回复:
{
_shards: {
total: 1
successful: 1
failed: 0
}
result: [{
text: Minn
offset: 0
length: 4
options: [{
text: Minnetonka
score: 1
} {
text: Minneapolis
score: 1
}]
}]
}
如果可能,需要完整回复:
{
_shards: {
total: 1
successful: 1
failed: 0
}
result: [{
text: Minn
offset: 0
length: 4
options: [{
text: Minnetonka, MN
score: 1
} {
text: Minneapolis, MN
score: 1
}]
}]
}
这可能是该响应的某种变化吗?
答案 0 :(得分:0)
是的,这是可能的!试试这个:
PUT /listingsuggest
{
"mappings": {
"listing": {
"_source": {
"enabled": false
},
"dynamic": false,
"properties": {
"_all": {
"enabled": false
},
"listingTitle": {
"type": "completion",
"index_analyzer": "standard",
"search_analyzer": "standard"
},
"address": {
"dynamic": false,
"properties": {
"city": {
"type": "completion",
"index_analyzer": "standard",
"search_analyzer": "standard"
}
}
}
}
}
}
}
您不需要address.stateOrProvince
。
发布一些数据:
POST /listingsuggest/listing
{
"listingTitle" : "title1",
"address" : {
"city" : {
"input" : ["Minneapolis"],
"output" : "Minneapolis, MN"
}
}
}
POST /listingsuggest/listing
{
"listingTitle" : "title2",
"address" : {
"city" : {
"input": ["Minnetonka"],
"output" : "Minnetonka, MN"
}
}
}
并使用此查询:
POST /listingsuggest/_suggest
{
"listing" : {
"text" : "Minn",
"completion" : {
"field" : "address.city"
}
}
}
它返回:
"listing": [
{
"options": [
{
"text": "Minneapolis, MN",
"score": 1
},
{
"text": "Minnetonka, MN",
"score": 1
}
]
}
]