POST /sites/$site/search

Search within a site using an Elasticsearch Query API.

Resource Information

   
Method POST
URL https://public-api.wordpress.com/rest/v1.2/sites/$site/search
Requires authentication? No

Method Parameters

Parameter Type Description
$site (int|string) Site ID or domain

Query Parameters

Parameter Type Description
context (string)
display:
(default) Formats the output as HTML for display. Shortcodes are parsed, paragraph tags are added, etc..
edit:
Formats the output for editing. Shortcodes are left unparsed, significant whitespace is kept, etc..
http_envelope (bool)
false:
(default)
true:
Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.
pretty (bool)
false:
(default)
true:
Output pretty JSON
meta (string) Optional. Loads data from the endpoints found in the 'meta' part of the response. Comma-separated list. Example: meta=site,likes
fields (string) Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title
callback (string) An optional JSONP callback function.

Request Parameters

Parameter Type Description
size (int) Number of results to return. Max depends on whether requestor is VIP, Jetpack or others.
from (int) Item number to return. Max depends on whether requestor is VIP, Jetpack or others.
fields (array) List of fields to return. Default is blog_id and post_id. See all fields.
query (array) Allows (almost) full access to the ES query DSL. See Elasticsearch Query DSL. Some filters and queries are not allowed for performance reasons, as documented here.
aggregations (array) Return aggregations from matches to the search. See details.
sort (array) How to sort results. Default is _score. See the Elasticsearch sort docs
filter (array) Filters applied to the search. Will be added as a part of a top level bool query
suggest (array) Experimental - Run suggestors on this search See Elasticsearch suggesters
rescore (array) Experimental - Do query rescores on the search. See Elasticsearch rescoring
facets (array) Deprecated. Do not use. Will be removed soon.
additional_blog_ids (array) List of additional blog_ids to run the search on.

Response Parameters

Parameter Type Description
hits (array) The top level "hits" object from the ElasticSearch query response.

Resource Errors

These are the possible errors returned by this endpoint.

HTTP Code Error Identifier Error Message
403 Unauthorized User cannot access this restricted blog
403 Unauthorized Private sites are not currently accessible for search.
403 unauthorized User cannot access this private blog.
403 unauthorized User cannot access this restricted blog

Example

curl \
 -H 'authorization: Bearer YOUR_API_TOKEN' \
 --data-urlencode 'size=10' \
 --data-urlencode 'from=0' \
 --data-urlencode 'query=Array' \
 --data-urlencode 'fields=Array' \
 --data-urlencode 'sort=Array' \
 'https://public-api.wordpress.com/rest/v1/sites/1234/search'
<?php
$options  = array (
  'http' => 
  array (
    'ignore_errors' => true,
    'method' => 'POST',
    'header' => 
    array (
      0 => 'authorization: Bearer YOUR_API_TOKEN',
      1 => 'Content-Type: application/x-www-form-urlencoded',
    ),
    'content' => 
     http_build_query(  array (
        'size' => 10,
        'from' => 0,
        'query' => 
        array (
          'multi_match' => 
          array (
            'query' => 'Foo',
            'fields' => 
            array (
              0 => 'title.en',
              1 => 'content.en',
            ),
          ),
        ),
        'fields' => 
        array (
          0 => 'post_id',
        ),
        'sort' => 
        array (
          0 => '_score',
          1 => 
          array (
            'date' => 'desc',
          ),
        ),
      )),
  ),
);

$context  = stream_context_create( $options );
$response = file_get_contents(
	'https://public-api.wordpress.com/rest/v1/sites/1234/search',
	false,
	$context
);
$response = json_decode( $response );
?>