我的文档的字段product_code
包含类似pc00XXa
的字符串值,其中X
被替换为某个数字1..9。我期待这个短语前缀查询的9个文档的结果:
{
"query": {
"match": {
"_all": {
"query": "pc001",
"type": "phrase_prefix"
}
}
}
}
...但结果是空的。使用product_code
代替_all
,我得到了预期的9个文档。
使用前缀查询而不是词组前缀查询似乎与_all
和product_code
字段一样正常工作。以下查询给了我9个文件:
{
"query": {
"prefix": {
"_all": {
"value": "pc001"
}
}
}
}
Elasticsearch documentation说“match_phrase_prefix与match_phrase相同,不同之处在于它允许在文本的最后一个术语上进行前缀匹配”。在我的情况下,我在查询中只有一个术语,所以我希望它可以作为前缀。
当查询包含单个术语时,短语前缀查询与前缀查询的区别是什么?为什么使用_all
比明确指定字段名称的结果更少?