elasticsearch - match_phrase 查询在一个查询中运行多个
问题描述
我正在尝试使用来自我的弹性的查询来获取与“ListExperiences.Title”匹配的一些详细信息
{
"size": 100,
"query": {
"match_phrase": {
"ListExperiences.Title": "technical specialist"
}
},
"_source":["skillstop"]
}
我能够成功执行并得到所需的结果。
{...
"hits":[{
...
"_source":{"skillstop": "government, active directory"
} }
]}
hits 的长度 = 1,因为我只进行了查询。但是如果我想跑这样五个头衔,例如:“支持专家”、“技术专家”、“技术专家”、“客户服务代表”,我必须运行弹性搜索 5 次。
有什么方法可以一次全部运行吗?(期望我得到点击长度= 5)
我试过这样
{
"size": 100,
"query": {
"dis_max":{
"queries":[
{"match_phrase": {
"ListExperiences.Title": "technical specialist"} },
{"match_phrase": {
"ListExperiences.Title": "technical expert"} }
]
}
}
}
它只返回“技术专家”或最后一位。
解决方案
这取决于。如果你想启动一个 or 查询,你应该尝试:
{
"query" : {
"bool" : {
"should": [{
"match_phrase": {
"ListExperiences.Title": "technical specialist"
}
}, {
"match_phrase": {
"ListExperiences.Title": "technical expert"
}
}]
}
}
}
如果你想只用一个 POST 请求进行多个查询,你应该使用multi_search
- doc here
GET <your_index_name>/_msearch
{"query" : {"match_phrase" : {"ListExperiences.Title": "technical specialist"}}}
{"query" : {"match_phrase" : {"ListExperiences.Title": "technical expert"}}}
推荐阅读
- ios - 在 UICollectionViewCell 上缩放转换
- c# - 并行观察多个 IObservable
- php - Nginx 代理 Php-fpm7.2 + 远程静态文件
- angularjs - 如何在 ng-repeat 之外但仅在 html 中检索值
- sql-server - 如何查找与给定用户关联的数据库角色?
- react-native - 当文本输入和提交按钮都在反应原生的不同js文件中时,如何在单击提交时进行空检查并导航到新屏幕?
- python - 在类似于 sql like 运算符的 dataframe1 列中找到 dataframe2 列,并使用 pandas 列出 dataframe2 的结果
- c# - .NET Core 依赖注入 - 解析接口的实现和 IEnumerable
- fortran - 我如何为这种分布生成数字?
- java - Spring MVC:org.apache.catalina.LifecycleException