I was running my first elasticsearch test case, I am using Java as the solution perspective to do elasticsearch experiment. it works perfectly fine in eclipse Debug Mode,
the debug mode result:
{postDate=2016-01-31T10:32:58.952Z, title=Posting, content=today's weather is hot, tags=[hashtag]}
But when I try this on in normal Run application mode, I am getting the following exception and I have no idea at all. Please guide me.
The following exception:
8253 [main] INFO org.elasticsearch.node - [Marc Spector] started 8257 [elasticsearch[Marc Spector][clusterService#updateTask][T#1]] DEBUG org.elasticsearch.index.store - [Marc Spector] [facebook] using index.store.throttle.type [none], with index.store.throttle.max_bytes_per_sec [0b] 8273 [elasticsearch[Marc Spector][search][T#4]] DEBUG org.elasticsearch.action.search.type - [Marc Spector] All shards failed for phase: [query] RemoteTransportException[[Marc Spector][127.0.0.1:9300][indices:data/read/search[phase/query]]]; nested: IndexNotFoundException[no such index]; Caused by: [facebook] IndexNotFoundException[no such index] at org.elasticsearch.indices.IndicesService.indexServiceSafe(IndicesService.java:310) at org.elasticsearch.search.SearchService.createContext(SearchService.java:635) at org.elasticsearch.search.SearchService.createAndPutContext(SearchService.java:617) at org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:368) at org.elasticsearch.search.action.SearchServiceTransportAction$SearchQueryTransportHandler.messageReceived(SearchServiceTransportAction.java:368) at org.elasticsearch.search.action.SearchServiceTransportAction$SearchQueryTransportHandler.messageReceived(SearchServiceTransportAction.java:365) at org.elasticsearch.transport.TransportService$4.doRun(TransportService.java:350) at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Exception in thread "main" Failed to execute phase [query], all shards failed at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.onFirstPhaseResult(TransportSearchTypeAction.java:228) at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction$1.onFailure(TransportSearchTypeAction.java:174) at org.elasticsearch.action.ActionListenerResponseHandler.handleException(ActionListenerResponseHandler.java:46) at org.elasticsearch.transport.TransportService$DirectResponseChannel.processException(TransportService.java:821) at org.elasticsearch.transport.TransportService$DirectResponseChannel.sendResponse(TransportService.java:799) at org.elasticsearch.transport.TransportService$4.onFailure(TransportService.java:361) at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:42) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) 8278 [elasticsearch[Marc Spector][clusterService#updateTask][T#1]] DEBUG org.elasticsearch.index.mapper - [Marc Spector] [facebook] using dynamic[true]
The I think showing source code can be more clear to the issue
Source:
Node node = nodeBuilder().clusterName("testing2").node(); Client client = node.client(); SearchResponse response = client.prepareSearch("facebook") .setTypes("Lance") .setSearchType(SearchType.QUERY_THEN_FETCH) .setQuery(QueryBuilders.matchPhrasePrefixQuery("title", "Pos")) .setFrom(0).setSize(60).setExplain(true) .execute() .actionGet(); SearchHit[] searchResponse = response.getHits().getHits(); for(SearchHit hit : searchResponse){ System.out.println(hit.getSource()); }
Advertisement
Answer
Before querying your facebook index, you need to create it first:
Settings indexSettings = ImmutableSettings.settingsBuilder() .put("number_of_shards", 5) .put("number_of_replicas", 1) .build(); CreateIndexRequest indexRequest = new CreateIndexRequest("facebook", indexSettings); client.admin().indices().create(indexRequest).actionGet();
And if you expect to find some results, you need to index your data also:
IndexResponse response = client.prepareIndex("facebook", "Lance", "1") .setSource(jsonBuilder() .startObject() .field("title", "Posting") .field("postDate", new Date()) .field("content", "today's weather is hot") .field("tags", Lists.newArrayList("hashtag")) .endObject() ) .execute() .actionGet();
Then you can search on your index.