elasticsearch - 如何在布尔查询中只选择一个分支
问题描述
我有一份文件清单
[
{
"shortName": "CA",
"longName": "California"
},
{
"shortName": "New York",
"longName": "New York"
},
]
如何配置查询以仅选择匹配的第一个字段,例如maximumSouldMatch
=1
例如,如果我 search New York
,它应该只匹配shortName
但不能同时匹配,因为在这种情况下,分数将加倍
解决方案
使用带有类型的multi_match
查询(恰好是默认值),返回的分数将是最佳匹配字段之一,但如果两个字段都匹配则不会合并(就像使用or的情况一样)best_fields
most_fields
cross_fields
{
"query": {
"multi_match" : {
"query" : "New York",
"fields" : [ "shortName", "longName" ]
}
}
}
推荐阅读
- javascript - 努力将对象转换为在其中一个子对象中具有键
- java - Android SQLite - 安全地替换字符串的一部分
- repository - Nexus Sonartype | 启动问题 | Codehaus 快照问题
- powershell - 通过 Powershell 对 SQLite3 数据库运行查询
- ios - 如何在没有用户创建用户名和密码的情况下从 iOS 使用 kinesis firehose?
- r - big_cprodMat 输出问题:矩阵太大
- apache-kafka - 具有大量磁盘 IO 的 Kafka Streams 作业
- javascript - document.referrer if 语句不起作用
- java - JHipster 一代的 MS 陷入无限循环
- angular - 使用 ngIf 控制元素结果 ExpressionChangedAfterItHasBeenCheckedError 的显示/隐藏