Search API, Views and Services API

Events happening in the community are now at Drupal community events on www.drupal.org.
nathan_czh's picture

I am trying to use search API with the REST API provided with services. I have a view(as described below), a search index which indexes nodes, and a service endpoint. When i use the browser to directly access the view, the results are correct, but when I send a get request to the rest endpoint, I get something like

[
{
"price": null,
"description": null,
"title": "",
"image_url": "",
"company": "",
"hot_deal": null,
"nid": "0",
"name": "",
"uid": "0",
"html": null
}
]

The view:

$view = new view();
$view->name = 'search_products';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'search_api_index_products';
$view->human_name = 'Search Products';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

/* Display: Master /
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['use_more_always'] = FALSE;
$handler->display->display_options['access']['type'] = 'none';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['pager']['type'] = 'full';
$handler->display->display_options['style_plugin'] = 'default';
$handler->display->display_options['row_plugin'] = 'fields';
/
No results behavior: Global: Result summary /
$handler->display->display_options['empty']['result']['id'] = 'result';
$handler->display->display_options['empty']['result']['table'] = 'views';
$handler->display->display_options['empty']['result']['field'] = 'result';
$handler->display->display_options['empty']['result']['empty'] = TRUE;
/
Relationship: Indexed Node: Author /
$handler->display->display_options['relationships']['author']['id'] = 'author';
$handler->display->display_options['relationships']['author']['table'] = 'search_api_index_products';
$handler->display->display_options['relationships']['author']['field'] = 'author';
/
Relationship: Indexed Node: Image » The image file. /
$handler->display->display_options['relationships']['field_image_file']['id'] = 'field_image_file';
$handler->display->display_options['relationships']['field_image_file']['table'] = 'search_api_index_products';
$handler->display->display_options['relationships']['field_image_file']['field'] = 'field_image_file';
/
Relationship: User: Exhibitor profile /
$handler->display->display_options['relationships']['profile_exhibitor']['id'] = 'profile_exhibitor';
$handler->display->display_options['relationships']['profile_exhibitor']['table'] = 'entity_user';
$handler->display->display_options['relationships']['profile_exhibitor']['field'] = 'profile_exhibitor';
$handler->display->display_options['relationships']['profile_exhibitor']['relationship'] = 'author';
/
Field: Indexed Node: Price /
$handler->display->display_options['fields']['field_price']['id'] = 'field_price';
$handler->display->display_options['fields']['field_price']['table'] = 'search_api_index_products';
$handler->display->display_options['fields']['field_price']['field'] = 'field_price';
$handler->display->display_options['fields']['field_price']['label'] = 'price';
$handler->display->display_options['fields']['field_price']['settings'] = array(
'thousand_separator' => '',
'prefix_suffix' => 1,
);
/
Field: Indexed Node: The main body text /
$handler->display->display_options['fields']['body']['id'] = 'body';
$handler->display->display_options['fields']['body']['table'] = 'search_api_index_products';
$handler->display->display_options['fields']['body']['field'] = 'body';
$handler->display->display_options['fields']['body']['label'] = 'description';
$handler->display->display_options['fields']['body']['type'] = 'text_plain';
/
Field: Indexed Node: Title /
$handler->display->display_options['fields']['title']['id'] = 'title';
$handler->display->display_options['fields']['title']['table'] = 'search_api_index_products';
$handler->display->display_options['fields']['title']['field'] = 'title';
$handler->display->display_options['fields']['title']['label'] = 'title';
$handler->display->display_options['fields']['title']['link_to_entity'] = 0;
/
Field: File: URL /
$handler->display->display_options['fields']['url']['id'] = 'url';
$handler->display->display_options['fields']['url']['table'] = 'entity_file';
$handler->display->display_options['fields']['url']['field'] = 'url';
$handler->display->display_options['fields']['url']['relationship'] = 'field_image_file';
$handler->display->display_options['fields']['url']['label'] = 'image_url';
$handler->display->display_options['fields']['url']['link_to_entity'] = 0;
/
Field: Profile: Company » Company /
$handler->display->display_options['fields']['field_profile_organisation_name']['id'] = 'field_profile_organisation_name';
$handler->display->display_options['fields']['field_profile_organisation_name']['table'] = 'entity_profile2';
$handler->display->display_options['fields']['field_profile_organisation_name']['field'] = 'field_profile_organisation_name';
$handler->display->display_options['fields']['field_profile_organisation_name']['relationship'] = 'profile_exhibitor';
$handler->display->display_options['fields']['field_profile_organisation_name']['label'] = 'company';
$handler->display->display_options['fields']['field_profile_organisation_name']['link_to_entity'] = 0;
/
Field: Indexed Node: Hot Deal /
$handler->display->display_options['fields']['field_hot_deal']['id'] = 'field_hot_deal';
$handler->display->display_options['fields']['field_hot_deal']['table'] = 'search_api_index_products';
$handler->display->display_options['fields']['field_hot_deal']['field'] = 'field_hot_deal';
$handler->display->display_options['fields']['field_hot_deal']['label'] = 'hot_deal';
/
Field: Indexed Node: Node ID /
$handler->display->display_options['fields']['nid_1']['id'] = 'nid_1';
$handler->display->display_options['fields']['nid_1']['table'] = 'search_api_index_products';
$handler->display->display_options['fields']['nid_1']['field'] = 'nid';
$handler->display->display_options['fields']['nid_1']['label'] = 'nid';
$handler->display->display_options['fields']['nid_1']['separator'] = '';
$handler->display->display_options['fields']['nid_1']['link_to_entity'] = 0;
/
Field: User: Name /
$handler->display->display_options['fields']['name']['id'] = 'name';
$handler->display->display_options['fields']['name']['table'] = 'entity_user';
$handler->display->display_options['fields']['name']['field'] = 'name';
$handler->display->display_options['fields']['name']['relationship'] = 'author';
/
Field: User: User ID /
$handler->display->display_options['fields']['uid']['id'] = 'uid';
$handler->display->display_options['fields']['uid']['table'] = 'entity_user';
$handler->display->display_options['fields']['uid']['field'] = 'uid';
$handler->display->display_options['fields']['uid']['relationship'] = 'author';
$handler->display->display_options['fields']['uid']['label'] = 'uid';
$handler->display->display_options['fields']['uid']['separator'] = '';
$handler->display->display_options['fields']['uid']['link_to_entity'] = 0;
/
Field: Indexed Node: The main body text /
$handler->display->display_options['fields']['body_1']['id'] = 'body_1';
$handler->display->display_options['fields']['body_1']['table'] = 'search_api_index_products';
$handler->display->display_options['fields']['body_1']['field'] = 'body';
$handler->display->display_options['fields']['body_1']['label'] = 'html';
$handler->display->display_options['filter_groups']['groups'] = array(
1 => 'AND',
2 => 'AND',
);
/
Filter criterion: Indexed Node: Price /
$handler->display->display_options['filters']['field_price']['id'] = 'field_price';
$handler->display->display_options['filters']['field_price']['table'] = 'search_api_index_products';
$handler->display->display_options['filters']['field_price']['field'] = 'field_price';
$handler->display->display_options['filters']['field_price']['operator'] = '>=';
$handler->display->display_options['filters']['field_price']['group'] = 1;
$handler->display->display_options['filters']['field_price']['exposed'] = TRUE;
$handler->display->display_options['filters']['field_price']['expose']['operator_id'] = 'field_price_op';
$handler->display->display_options['filters']['field_price']['expose']['label'] = 'price_smaller';
$handler->display->display_options['filters']['field_price']['expose']['operator'] = 'field_price_op';
$handler->display->display_options['filters']['field_price']['expose']['identifier'] = 'field_price';
$handler->display->display_options['filters']['field_price']['expose']['remember_roles'] = array(
2 => '2',
1 => 0,
3 => 0,
6 => 0,
4 => 0,
7 => 0,
5 => 0,
8 => 0,
);
$handler->display->display_options['filters']['field_price']['group_info']['label'] = 'Price';
$handler->display->display_options['filters']['field_price']['group_info']['identifier'] = 'field_price';
$handler->display->display_options['filters']['field_price']['group_info']['remember'] = FALSE;
$handler->display->display_options['filters']['field_price']['group_info']['group_items'] = array(
1 => array(),
2 => array(),
3 => array(),
);
/
Filter criterion: Indexed Node: Price /
$handler->display->display_options['filters']['field_price_1']['id'] = 'field_price_1';
$handler->display->display_options['filters']['field_price_1']['table'] = 'search_api_index_products';
$handler->display->display_options['filters']['field_price_1']['field'] = 'field_price';
$handler->display->display_options['filters']['field_price_1']['operator'] = '<=';
$handler->display->display_options['filters']['field_price_1']['group'] = 1;
$handler->display->display_options['filters']['field_price_1']['exposed'] = TRUE;
$handler->display->display_options['filters']['field_price_1']['expose']['operator_id'] = 'field_price_1_op';
$handler->display->display_options['filters']['field_price_1']['expose']['label'] = 'price_larger';
$handler->display->display_options['filters']['field_price_1']['expose']['operator'] = 'field_price_1_op';
$handler->display->display_options['filters']['field_price_1']['expose']['identifier'] = 'field_price_1';
$handler->display->display_options['filters']['field_price_1']['expose']['remember_roles'] = array(
2 => '2',
1 => 0,
3 => 0,
6 => 0,
4 => 0,
7 => 0,
5 => 0,
8 => 0,
);
/
Filter criterion: Indexed Node: Title */
$handler->display->display_options['filters']['title']['id'] = 'title';
$handler->display->display_options['filters']['title']['table'] = 'search_api_index_products';
$handler->display->display_options['filters']['title']['field'] = 'title';
$handler->display->display_options['filters']['title']['group'] = 2;
$handler->display->display_options['filters']['title']['exposed'] = TRUE;
$handler->display->display_options['filters']['title']['expose']['operator_id'] = 'title_op';
$handler->display->display_options['filters']['title']['expose']['label'] = 'name';
$handler->display->display_options['filters']['title']['expose']['operator'] = 'title_op';
$handler->display->display_options['filters']['title']['expose']['identifier'] = 'title';
$handler->display->display_options['filters']['title']['expose']['remember_roles'] = array(
2 => '2',
1 => 0,
3 => 0,
6 => 0,
4 => 0,
7 => 0,
5 => 0,
8 => 0,
);

/* Display: Page */
$handler = $view->new_display('page', 'Page', 'page_1');
$handler->display->display_options['defaults']['hide_admin_links'] = FALSE;
$handler->display->display_options['path'] = 'psearch';

Search

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds:

Hot content this week