Elastic Search PHP搜索查询有什么问题?

时间:2015-10-01 08:16:27

标签: php elasticsearch

我一直在努力让以下JSON在PHP Arrays中运行,但我似乎没有得到任何点击。

JSON如下:

{
  "query": {
    "filtered": {
      "query": {
        "query_string": {
          "query": "search"
        }
      }
    }
  },
  "fields": [
    "body",
    "title",
    "postDate",
    "user",
    "name"
  ],
  "from": 0,
  "size": 50,
  "sort": {
    "_score": {
      "order": "asc"
    }
  },
  "explain": true
}

我设法创建的PHP是这样的:

$docs = $client->search([
    'index' => 'blog',
    'type' => 'posts',
    'body' => [
        'query' => [
            'filtered' => [
                'query' => [
                    'query_string' => [
                        'query' => $search_query
                    ]
                ]
            ]
        ],
        'fields' => [
            'body',
            'title',
            'postDate',
            'user',
            'name'
        ],
        'from' => 0,
        'size' => 50,
        'sort' => [
            '_score' => [
                'order' => 'asc'
            ]
        ]
    ]

]);

它返回响应但没有命中,即使它应该(并且在JSON请求的情况下也是如此)

这里发生了什么?

1 个答案:

答案 0 :(得分:0)

邮件类型根本不需要......我不知何故认为它是。我使用了一个名为ElasticHQ的工具来生成JSON,但我并没有意识到它并没有使用Posts作为一种类型。

将其更改为

$docs = $client->search([
    'index' => 'blog',
    'body' => [
        'query' => [
            'filtered' => [
                'query' => [
                    'query_string' => [
                        'query' => $search_query
                    ]
                ]
            ]
        ],
        'fields' => [
            'body',
            'title',
            'postDate',
            'user',
            'name'
        ],
        'from' => 0,
        'size' => 50,
        'sort' => [
            '_score' => [
                'order' => 'asc'
            ]
        ]
    ]

]);