elasticsearch - 使用通配符搜索多个字段的 Elastic Search 完全匹配查询
问题描述
我有如下弹性搜索数据存储,我需要通过这些数据编写多搜索 ES 查询,完全匹配和完全匹配 + *(通配符)
[
{
"id": "123",
"name": "test123 abc bct",
"externalObj": {
"id": "abc 123"
}
},
{
"id": "124",
"name": "test124 abc bct",
"externalObj": {
"id": "abc 124"
}
}
]
目前我已经写了如下查询,
{
"query": {
"query_string": {
"fields": [
"name^5",
"id",
"externalObj.*"
],
"query": "(test124 abc)",
"default_operator": "AND"
}
}
}
上面的查询在完全匹配的情况下工作正常,但我还需要获取部分搜索的数据和响应的最大相关分数。那个东西不适用于这个查询。
例如:“查询”:“test124 ab”
任何人都可以帮我解决上述问题吗?
解决方案
有 2 个选项可以实现您想要的。您可以选择其中一种来使用:
- 设置
default_operator
为OR
(或只是将其删除,因为默认值为OR
)。
{
"query": {
"query_string": {
"fields": [
"name^5",
"id",
"externalObj.*"
],
"query": "test124 a"
}
}
}
- 将您的查询更改为
test124 a*
{
"query": {
"query_string": {
"fields": [
"name^5",
"id",
"externalObj.*"
],
"query": "test124 a*",
"default_operator": "AND"
}
}
}
推荐阅读
- python - python中的回文函数,由老师的逻辑
- r - 我想使用 `summarise()` 来计算整个团队的最低、平均和最高工资
- html - 将 HTML 网站与 React 应用共享身份验证合并
- node.js - nrwl nx 节点角度版本兼容性
- json - 如何在excel文件中追加json数据
- amazon-web-services - AWS lambda 没有触发器显示在 AWS 控制台中
- python - 我使用 Torchvision RetinaNet 的输入数据结构有问题吗?
- django - Django 查询优化
- python - 在多列中将“nan”作为字符串更改为 NaN
- c# - 如何用折线切割二维网格。算法