【问题标题】:PHP Elasticsearch: wildcard query won't find any resultsPHP Elasticsearch:通配符查询不会找到任何结果
【发布时间】:2019-06-27 17:15:23
【问题描述】:

我正在尝试对我的 elasticsearch 文档中的特定列使用通配符。然而,这样做,什么也没有发生。 Elasticsearch 没有找到任何结果。

来源:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-wildcard-query.html

我的搜索查询的样子:

array:3 [
  "index" => "certificates"
  "type" => "_doc"
  "body" => array:3 [
    "from" => 0
    "size" => 25
    "query" => array:1 [
      "wildcard" => array:1 [
        "product_name" => array:1 [
          "value" => "Fra*"
        ]
      ]
    ]
  ]
]

我看不出与 elasticsearch 文档推荐的内容有什么不同。

PHP 版本: 7.1.3

Elasticsearch 版本: 6.7.0

搜索时来自 elasticsearch 的响应:

{
    "took": 2,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 0,
        "max_score": null,
        "hits": []
    }
}

文档内的示例数据:

【问题讨论】:

  • 你能出示一份你认为应该匹配的文件吗?
  • 刚刚做了。希望对您有所帮助。
  • 对此有点误解。我已经展示了任何文件的结构。 product_name的实际值根本不重要。我知道我存储了什么以及我在寻找什么。即使——假设 product_name 的值为“King sized Burger”——输入“King sized Burger”也不会产生任何结果。它只是不工作。
  • 我的意思是一个包含数据的示例文档。
  • 将图片替换为实际文档。

标签: php elasticsearch


【解决方案1】:

没有用通配符解决它--仍然不起作用--但是,它适用于query_string

            'query_string' => [
                'query' => 'product_name:' . $request->product_name . '*',
                'default_operator' => 'AND'
            ]

【讨论】:

    猜你喜欢
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多