php - 查询必须匹配的数组

标签 php elasticsearch

我有文件索引。索引包含文档主体和文档类型,例如pdf,jpeg,png等。我可以用单词查询索引,并且使用一种文档类型必须很好。

                $params = [
                'index' => 'trial2',
                'type' => '_doc',
                'body' => [
                  'query' => [
                    'bool' => [
                      'must' => [
                        [ 'match' => [ 'file.extension' => "png" ] ],
                        [ 'match' => [ 'content' => "abc" ] ],
                      ]
                    ]
                  ]
                ]
              ];

screenshot的挑战是,我想查询仍使用must但具有文档类型数组(png但jpeg,gif,svg,tiff)的索引,以便将其分类为图像。我如何用数组替换png,以便至少有一个是正确的。

最佳答案

如果file.extensiontext类型:

只需在Match Query旁边添加更多 token 。确保您遍历this (Analysis)this (Analyzer)以了解其内部工作方式。

POST my_png/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "file.extension": "jpg jpeg png"        <---- Note this.
          }
        },
        {
          "match": {
            "content": "abc"
          }
        }
      ]
    }
  }
}

如果file.extensionkeyword类型(推荐)

或者,如果您在keyword中有一个file.extension.keyword sibling ,则可以使用Terms Query
POST my_png/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "terms": {                         <---- Terms Query
            "file.extension.keyword": [      <---- Or 'file.extension' field, whichever must of be type `keyword`
              "jpg",
              "jpeg",
              "png"
            ]
          }
        },
        {
          "match": {
            "content": "abc"
          }
        }
      ]
    }
  }
}

根据您的要求,我想您必须使用第二个选项作为完全匹配项,因此需要在Terms Query字段上使用keyword

希望有帮助!

关于php - 查询必须匹配的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58545755/

相关文章:

php - 跟踪用户在 "Weekly High Score"数据库中排名高于 X 位的次数

php - Elasticsearch 匹配 php 中的子字符串

python - Haystack搜索字段错误: The model 'None' combined with model_attr <attr_name> returned None

php - 如何使用 PHP Foreach 每次回显两个项目?

php - 如何从 Doctrine 查询生成器中获取部分结果

elasticsearch - 如何正确设置2节点ElasticSearch集群

docker-elk - 它是如何持久化 Elasticsearch 索引的?

java - 使用 Java API 的 Elasticsearch 复杂查询

javascript - Jquery ajax 不工作(Laravel 4)

javascript - 如何让jquery选择选项