我们在映射中使用了 minimal_english
词干过滤器。这是为了确保只有单数和复数是可搜索的,而不是相似的词。例如。 Test
和 Tests
在输入术语 - Test
时应该是 可搜索的 - 但 Tester
、 Testers
、 Testing
不应该是 。在尝试使用以下 RESTful API 进行搜索时,multi_field
属性类型可搜索,但 nested
属性类型不可搜索:
curl -X GET "http://10.113.124.136:9400/libtester/_search?pretty=true" -d '{
"query": {
"query_string": {
"query": " DescriptionDescription ",
"fields": [
"abc"
]
}
}
}'
映射如下所示:
{
"properties": {
"abc": {
"type": "multi_field",
"fields": {
"c_asset_id": {
"type": "string",
"index": "analyzed",
"include_in_all": true,
"analyzer": "basic_english"
},
"untouched": {
"type": "string",
"index": "analyzed",
"include_in_all": false,
"analyzer": "string_lowercase"
}
}
},
"xyz": {
"type": "nested",
"properties": {
"c_viewpoint": {
"type": "multi_field",
"fields": {
"c_viewpoint": {
"type": "string",
"index": "analyzed",
"include_in_all": true,
"analyzer": "basic_english"
},
"untouched": {
"type": "string",
"index": "analyzed",
"include_in_all": false,
"analyzer": "string_lowercase"
}
}
}
}
},
...
}
}
这是否与嵌套类型 - xyz 的映射有关,它们不能从与 multi_field 类型相同的 API 中进行搜索?
最佳答案
您可以搜索嵌套属性,它只需要稍微不同的语法。您必须指定路径,然后明确使用您要搜索的每个属性的路径。
本教程有一个 good overview of how nested documents work 。
关于Elasticsearch : singular and plural results,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13971655/