elasticsearch - 使用 elasticsearch 搜索所有世界
问题描述
我不知道如何进行多世界查询。
我遵循本指南,但如果不是完全匹配,我不会得到任何结果。
对于这个查询:
"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]+")))
解决方案
您没有得到结果,因为 GOODYEAR TIRE & RUBBER CO (GT)
它不包含GOODYEAR RUBBER
短语。
短语意味着它所有的单词必须完全相同且有序。
您应该尝试match_query,它会返回结果。
如果您在构建匹配查询时遇到任何问题,请告诉我。
推荐阅读
- flutter - 有 Flutter Web 替代 cached_network_image 吗?
- ios - 找不到代码签名身份,无法创建新身份,因为您启用了“只读”
- jenkins - Jenkins JIRA 插件:如何删除版本?
- crystal-reports - Crystal Reports - 寻找记录的下一个实例
- python - 如何将geojson转换为匀称的多边形?
- c# - Cassandra 集合序列化程序抛出异常
- php - 如何从laravel中的关系表中显示用户名
- javascript - 在 JSDOM 中未触发单击事件
- reactjs - 从所有按钮中删除活动类并将其添加到反应中单击的最后一个按钮
- java - Google Appengine 中的 Java8 更新