弹性搜索:如何在跨字段多匹配搜索中获得每个字段的完全匹配?

时间:2015-03-23 16:25:00

标签: field match phrase elasticsearch

我尝试进行精确的位置搜索,这意味着该位置中的每个字词都应与至少一个位置字段完全匹配。例如,如果我搜索"萨德伯里,米德尔塞克斯,马萨诸塞州"那么我想只获得与这三个术语中的每个术语完全匹配的结果。 location.city.name = Sudbury,location.county.name = Middlesex和location.region.name = Massachusetts的结果将匹配。

{
"multi_match": {
    "fields": [
        "location.city.name",
        "location.region.name",
        "location.county.name",
        "location.country.name"
    ],
    "query": "Sudbury, Middlesex, Massachusetts",
    "type": "cross_fields",
    "operator": "and"
}

这非常接近,但我也得到了东萨德伯里的结果。"我不想要东萨德伯里,我只想要与赛场完全匹配的结果。我怎样才能做到这一点?我知道"键入":"短语"是错的,因为它会搜索整个短语" Sudbury,Middlesex,Massachusetts"在每个领域都没有结果。

1 个答案:

答案 0 :(得分:0)

听起来像正在分析字段location.city.name并将'East Sudbury'拆分为'East'和'Sudbury'并返回搜索'Sudbury'

如果您一直在搜索特定字词,请尝试将字段设置为not_analyzed?