標籤:src ima asp 其他 sam mon 使用者 壓力 tcl
預設進行了elasticsearch安裝和ik安裝, 逾時配置, 分頁壓力配置等
添加maven依賴
<dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>2.4.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.1.3</version> </dependency>
注: 因為spring-data-elasticsearch目前只支援到2.4.0, 所以, 暫不使用5.2.0版本
關於版本控制可見: https://github.com/spring-projects/spring-data-elasticsearch
第一部分, 使用java操作elasticsearch
1, 建立一個node節點, 加入叢集中, 通過這個node擷取cilent (不建議使用)
這種方式相當於建立了一個節點, 不儲存資料, 可通過claspath下的elasticsearch.yml設定, 也可通過編程的方式配置,
Settings settings = ImmutableSettings.settingsBuilder().put("client.transport.ping_timeout", 1000) .put("discovery.zen.ping.multicast.enabled", "false").put("timeout", 1) .putArray("discovery.zen.ping.unicast.hosts", "l-flightdev18.f.dev.cn0.qunar.com:9300", "l-flightdev17.f.dev.cn0.qunar.com:9300") .build(); Node node = NodeBuilder.nodeBuilder().clusterName("flight_fuwu_order_index").client(true).settings(settings).node(); Client client = node.client();
2, 通過transportClient來串連叢集
擷取了所有node節點的client, 發送請求時遍曆可用的client,
Elasticsearch為Java使用者提供了兩種內建用戶端:節點用戶端(node client):節點用戶端以無資料節點(none data node)身份加入叢集,換言之,它自己不儲存任何資料,但是它知道資料在叢集中的具體位置,並且能夠直接轉寄請求到對應的節點上。傳輸用戶端(Transport client):這個更輕量的傳輸用戶端能夠發送請求到遠程叢集。它自己不加入叢集,只是簡單轉寄請求給叢集中的節點。兩個Java用戶端都通過9300連接埠與叢集互動,使用Elasticsearch傳輸協議(Elasticsearch Transport Protocol)。叢集中的節點之間也通過9300連接埠進行通訊。如果此連接埠未開放,你的節點將不能組成叢集。+TIPJava用戶端所在的Elasticsearch版本必須與叢集中其他節點一致,否則,它們可能互相無法識別。
https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.4/index.html
下面介紹第二種串連方式:
1, 擷取client串連
// 建立用戶端, 使用的預設叢集名, "elasticSearch" TransportClient client = TransportClient.builder().build() .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.50.37"), 9300));
// 通過setting對象指定叢集配置資訊, 配置的叢集名 Settings settings = Settings.settingsBuilder().put("cluster.name", "wenbronk_cluster") // 設定叢集名 .put("client.transport.sniff", true) // 開啟嗅探 .put("client.transport.ignore_cluster_name", true) // 忽略叢集名字驗證 // .put("client.transport.ping_timeout", 5) // 報錯, ping等待時間, // 預設5s // .put("client.transport.nodes_sampler_interval", 5) //報錯, // 多久開啟串連, 預設5s .build(); TransportClient client = TransportClient.builder().settings(settings).build();
2, 內建json轉換, 使用靜態匯入
import static org.elasticsearch.common.xcontent.XContentFactory.*;XContentBuilder builder = jsonBuilder() .startObject() .field("user", "kimchy") .field("postDate", new Date()) .field("message", "trying out Elasticsearch") .endObject()
String json = builder .string();
3,
elasticsearch java操作 api