Thx Jörg, Your comments helped me get quite a bit further. Here is an updated version of my code:
https://gist.github.com/alaindesilets/aec9492890c37075fa4e On Monday, 21 July 2014 13:13:58 UTC-4, Jörg Prante wrote: > > To issue 1: you create a single node cluster without index, and a client > of it. > Duh! Don't know how I could have missed that. So now, I added a method createIndex() which creates the index if it doesn't exist, and sets number_of_replicas to 2. It doesn't define mappings since the ES doc says that default mappings will be automatically generated if none are specified. Note however that even with that change, I still couldn't see the new index in Marvel/Sense, when I instantiated the client with method makeClientFromEmbeddedNode(). But if I instantiate the client through a TransportClient, i.e. by invoking method makeClientFromTransportClient(), then Marvel/Sense sees the new index. Using a TransportClient instead of a client obtained from an embedded node also greatly accelerated the client creation. Instead of taking > 8 secs to create the client, it takes < 1 sec. Not sure why. > > To issue 2: you see the UnavailableShardsException caused by a timeout > while indexing to a replica shard. This means, you may have set up a single > node cluster, but with replica level 1 (default) which needs 2 nodes for > indexing. Maybe there was once another node joining the cluster and ES > wants it back abut it never came (after 60 secs). Then ES returns the > timeout error. Maybe replica level 0 helps. You should also check the > cluster health. A color of green shows everything works, yellow means there > are too few nodes to satisfy the replica condition, and read means the > cluster is not in a consistent/usable state. > I tried setting number_replica=0 and number_replica=1 in createIndex(), but I still got the org.elasticsearch.action.UnavailableShardsException error if I instantiate the client with makeClientFromEmbeddedNode(). But I don't get the error if I instantiate the client with makeClientFromTransportClient(), independantly of the number of replicas I specify. > To issue 3: not sure what clusterName() means. I would use settings and > add a field "cluster.name". Maybe it is equivalent. You must ensure you > use the same "cluster.name" setting throughout all nodes and clients. You > also can not reuse data from clusters that had other names (look into the > "data" folder) > I have now moved that code to a method called makeClientFromNamedClusterNode(). I haven't been able to make that work at all. To issue 4: ES takes ~5 secs for discovery, the zen modules pings and waits > for responding master nodes by default. If you just test locally on your > developer machine, you should disable zen. Most easily by disabling > networking at all, by using NodeBuilder.nodeBuilder().local(true)... > Not sure I understand what that means, but in any case, using a TransportClient seems to address that issue. So, all in all, I feel I am in pretty good shape now. Thanks for the help. There is one new Issue I an now encountering, when I try to do a bulk indexing, namely: Issue 5: If I uncomment the call to index100NewBeersInOneBatch(), I get the following: == Indexing 100 new beer objects as in one batch... (Elapsed so far: 1.0 seconds) Adding beer no 0 to the bulk request. (Elapsed so far: 1.0 seconds) Exception in thread "main" java.lang.NullPointerException at org.elasticsearch.action.bulk.BulkRequest.internalAdd(BulkRequest .java:129) at org.elasticsearch.action.bulk.BulkRequest.add(BulkRequest.java: 118) at org.elasticsearch.action.bulk.BulkRequestBuilder.add( BulkRequestBuilder.java:52) at ca.nrc.ElasticSearch.ElasticSearchDemo.index100NewBeersInOneBatch (ElasticSearchDemo.java:158) at ca.nrc.ElasticSearch.ElasticSearchDemo.main(ElasticSearchDemo. java:72) Any thoughts on what might be going on there? Thx. Alain -- You received this message because you are subscribed to the Google Groups "elasticsearch" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/c3f6c329-4dc4-4714-8e6b-bae1b7fa1f51%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
