使用elasticsearch搜索全世界

问题描述 投票:1回答:1

我不知道如何做多世界查询。

我按照this指南,但如果不是完全匹配,我得不到任何结果。

对于此查询:

"query": {
    "match" : {
        "name" : "GOODYEAR TIRE"
    }
}

我得到:

"hits": {
"total": 2,
"max_score": 10.46396,
"hits": [
{
"_index": "holdings1",
"_type": "searchentity",
"_id": "80809219-88a0-49bc-96b6-183db8a7d056",
"_score": 10.46396,
"_source": {
"guid": "80809219-88a0-49bc-96b6-183db8a7d056",
...
"name": "GOODYEAR TIRE",
"issuer": "GOODYEAR TIRE & RUBBER CO (GT)",
...
}
}

但为此,我什么都没得到:

"query": {
    "match" : {
        "issuer" : "GOODYEAR TIRE"
    }
}

制图:

"searchentity": {
                "properties": {
                      .....
                    "issuer": {
                        "type": "text",
                        "analyzer": "custom"
                    },
                    "name": {
                        "type": "text",
                        "analyzer": "custom"
                    }
                     ......
                }
            }

分析仪(C#):

        .Settings(s => s.NumberOfReplicas(1).NumberOfShards(1).Analysis(a => a.Analyzers(an => an.Custom("custom", ca => ca
                        .Tokenizer("keyword")
                        .CharFilters("remove-specials")
                        .Filters("lowercase")
                    )).CharFilters(charFilters => charFilters.PatternReplace("remove-specials", p => p.Pattern("[^0-9a-zA-Z\u0590-\u05fe\x20]+")))
elasticsearch
1个回答
2
投票

你没有得到结果,因为GOODYEAR TIRE & RUBBER CO (GT)不包含GOODYEAR RUBBER作为短语。

短语意味着所有单词必须完全相同且按顺序排列。

你应该尝试match_query,它会返回结果。

如果您在构建匹配查询时遇到任何问题,请与我们联系。

© www.soinside.com 2019 - 2024. All rights reserved.