使用bool查询的ElasticSearch全文搜索

时间:2017-03-18 14:33:05

标签: php elasticsearch

我正在尝试使用

在整个文档中进行全文搜索
"query" => [
    "query_string" => [
        "fields" => ["_all"],
        "query" => "fooA AND fooB"
    ]
]

效果很好。在同一个查询中我需要运行bool查询

"query" => [
    "bool" => [
        "must" => [
            "term" => [
                "name" => "My_name"
            ]
        ],
        "should" => [
            ....
        ]
    ]
]

是否可以将这两个查询结合起来?这是进行全文搜索的正确方法吗?

结果我需要包含" fooA和fooB"的所有文件。在任何字段和特殊字段名称等于" My_name"。

2 个答案:

答案 0 :(得分:0)

是的,您可以将这些组合在一起,如下所示:

GET _search
{
  "from": 0,
  "size": 20,
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "name": "MY_NAME"
          }
        },
        {
          "query_string": {
            "query": "fooA AND fooB",
            "fields": [
              "_all"
            ]
          }
        }
      ]
    }
  }
}

答案 1 :(得分:0)

感谢this post,我找到了问题的解决方案。

"query" => [
    "bool" => [
        "must" => [
            [
                "term" => [
                    "name" => "My_name"
                ]
            ],
            [
                "query_string" => [
                    "fields" => ["_all"],
                    "query" => "fooA AND fooB"
                ]
            ]
        ]
    ]
]

这种组合对我有用