我想知道是否有可能组合两种查询类型,在我的情况下我需要一个queryString和过滤查询,每个都必须在不同的字段上运行。
过滤的查询获取$postids
中的所有记录
post_id的$postids:multiple
值
查询字符串用于搜索文本中的单词
目前我需要两个请求来存档:
查询已过滤:
GET /myindex1/tweecoms/_search
{
"query" : {
"filtered" : {
"filter" : {
"terms" : {
"post_id" : ['.$postids.']
}
}
}
}
query String:
GET /myindex1/tweecoms/_search{
"query": {
"query_string": {
"query": "*' . $sujet . '*",
"lenient": true
}
}
}
我尝试将它结合起来
GET /myindex1/tweecoms/_search
{
"query": {
"bool": {
"should": [
{
"query_string": {
"query": "hhhh",
"lenient": true
}
},
{
"filtered" : {
"filter" : {
"terms" : {
"post_id" : [0,157]
}
}
}
}
]
}
}
}`
但我尝试只运行查询字符串
答案 0 :(得分:0)
我认为你需要在filtered
子句中编写查询。 This会帮助您理解。
试试这个
{
"query": {
"filtered": {
"query": {
"query_string": {
"query": "keyword"
}
},
"filter": {
"terms": {
"post_id": [0,157]
}
}
}
}
}
您的查询的问题是您正在使用should子句,该子句将选择具有给定查询字符串的文档或具有给定post_ids的文档。您可以将should
替换为must
,并获得预期结果。
您还可以在查询中使用minimum_should_match参数
我希望这会有所帮助