Cet article présente principalement l'exemple de code du puissant moteur de recherche Elastisearchsearch de Java. Il a une certaine valeur de référence. Ceux qui sont intéressés peuvent en apprendre davantage
Elastisearch est un outil très puissant et simple. -à utiliser le moteur. L'utilisation du moteur de rechercheindex
pour exécuter Elastisearch sur le système ne nécessite que les étapes suivantes
1.
Le code est le suivant :
Copier après la connexion
2. Décompressez
1 | unzip elasticsearch-5.4.0.zip
|
Copier après la connexion
3. Exécutez
1 | elasticsearch-5.4.0/bin/elasticsearch
|
Copier après la connexion
. tué directement à cause d'un débordement de mémoire (MOO), elastisearch La mémoire occupée est très grande, donc lors de l'exécution sur un serveur avec une mémoire relativement petite, vous devez d'abord modifier la taille de la mémoire du jvm
1 | vi elasticsearch-5.4.0 /config/jvm .options
|
Copier après la connexion
Changer le taille de la pile des lignes 22 et 23 à 512M
Copier après la connexion
S'il est toujours tué après le redémarrage, remplacez-le par une valeur plus petite
4 Si le test est réussi
<🎜. >
Vous pouvez voir les informations de retour suivantes :
Copier après la connexion
Cela indique que le démarrage est réussi
1 2 3 4 5 6 7 8 9 | {
"status" : 200,
"name" : "Shrunken Bones" ,
"version" : {
"number" : "1.4.0" ,
"lucene_version" : "4.10"
},
"tagline" : "You Know, for Search"
}
|
Copier après la connexion
Ensuite, nous utilisons l'
API de Java pour fonctionner ElasticsearchTout d'abord, importez les packages elastisearch et log4j
POM
Voici plusieurs opérations couramment utilisées
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <? xml version = "1.0" encoding = "UTF-8" ?>
< project xmlns = "http://maven.apache.org/POM/4.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
< modelVersion >4.0.0</ modelVersion >
< groupId >com.jk</ groupId >
< artifactId >ElasticsearchExample</ artifactId >
< version >1.0-SNAPSHOT</ version >
< dependencies >
< dependency >
< groupId >org.elasticsearch.client</ groupId >
< artifactId >transport</ artifactId >
< version >5.4.0</ version >
</ dependency >
< dependency >
< groupId >org.apache.logging.log4j</ groupId >
< artifactId >log4j-api</ artifactId >
< version >2.7</ version >
</ dependency >
</ dependencies >
</ project >
|
Copier après la connexion
1. Créer un client
1 2 3 4 5 6 7 | Client client = null ;
try {
client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress( new InetSocketTransportAddress(InetAddress.getByName( "localhost" ), 9300 ));
} catch (Exception e) {
e.printStackTrace();
}
|
Copier après la connexion
2. Créer un index
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | /**
* 创建索引,有则先删除
* @param client
*/
private static void recreateIndex(Client client) {
if (client.admin().indices().prepareExists(index).execute().actionGet()
.isExists()) {
DeleteIndexResponse deleteIndexResponse = client.admin().indices()
.delete( new DeleteIndexRequest(index)).actionGet();
System.out.println( "delete index :" );
System.out.println(deleteIndexResponse);
}
CreateIndexResponse createIndexResponse = client.admin().indices()
.prepareCreate(index).execute().actionGet();
System.out.println( "create index :" );
System.out.println(createIndexResponse);
}
|
Copier après la connexion
3.
Insérer des données
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | /**
* 插入数据
* @param client
*/
@SuppressWarnings ({ "rawtypes" , "unchecked" })
private static void doIndex( final Client client) {
Map s11 = new LinkedHashMap();
s11.put( "title" , "Think in java" );
s11.put( "origin" , "美国" );
s11.put( "description" , "初级java开发人员必读的书" );
s11.put( "author" , "Bruce Eckel" );
s11.put( "price" , 108 );
Map s12 = new LinkedHashMap();
s12.put( "title" , "Head First Java" );
s12.put( "origin" , "英国" );
s12.put( "description" , "java入门教材" );
s12.put( "author" , "Kathy Sierra" );
s12.put( "price" , 54 );
Map s21 = new LinkedHashMap();
s21.put( "title" , "Design Pattern" );
s21.put( "origin" , "法国" );
s21.put( "description" , "程序员不得不读的设计模式" );
s21.put( "author" , "Kathy Sierra" );
s21.put( "price" , 89 );
Map s22 = new LinkedHashMap();
s22.put( "title" , "黑客与画家" );
s22.put( "origin" , "法国" );
s22.put( "description" , "读完之后脑洞大开" );
s22.put( "author" , "Paul Graham" );
s22.put( "price" , 35 );
BulkResponse bulkResponse = client
.prepareBulk()
.add(client.prepareIndex(index, type).setId( "11" ).setSource(s11).setOpType(IndexRequest.OpType.INDEX).request())
.add(client.prepareIndex(index, type).setId( "12" ).setSource(s12).setOpType(IndexRequest.OpType.INDEX).request())
.add(client.prepareIndex(index, type).setId( "21" ).setSource(s21).setOpType(IndexRequest.OpType.INDEX).request())
.add(client.prepareIndex(index, type).setId( "22" ).setSource(s22).setOpType(IndexRequest.OpType.INDEX).request())
.execute().actionGet();
if (bulkResponse.hasFailures()) {
System.err.println( "index docs ERROR:" + bulkResponse.buildFailureMessage());
} else {
System.out.println( "index docs SUCCESS:" );
System.out.println(bulkResponse);
}
}
|
Copier après la connexion
4.
RequêteTout
1 2 3 4 5 6 7 8 9 10 11 12 13 | /**
* 查询所有
*/
private static void searchAll(Client client) {
SearchResponse response = client.prepareSearch(index)
.setQuery(QueryBuilders.matchAllQuery())
.setExplain( true ).execute().actionGet();
System.out.println( "searchAll : " );
for (SearchHit searchHit : response.getHits()) {
System.out.println( "********" );
System.out.println(searchHit.getSource());
}
}
|
Copier après la connexion
Requête par mot clé
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /**
* 关键词查询
*
* @param client
*/
private static void searchKeyWord(Client client) {
SearchResponse response = client.prepareSearch(index)
.setQuery(QueryBuilders.matchQuery( "_all" , "法国" ))
.execute().actionGet();
System.out.println( "searchKeyWord : " );
System.out.println(response);
}
|
Copier après la connexion
6. Filtrage de la plage de valeurs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | /**
* 数值范围过滤
*
* @param client
*/
private static void searchRange(Client client) {
SearchResponse response = client.prepareSearch(index).
setQuery(QueryBuilders.rangeQuery( "price" ).gt( 80 ).lt( 100 ))
.execute()
.actionGet();
System.out.println( "searchRange : " );
System.out.println(response);
}
|
Copier après la connexion
7. Trier
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | /**
* 排序
*
* @param client
*/
private static void searchOrdered(Client client) {
SearchResponse response = client.prepareSearch(index)
.setQuery(QueryBuilders.matchAllQuery())
.addSort(SortBuilders.fieldSort( "price" )
.order(SortOrder.DESC)).execute().actionGet();
System.out.println( "searchOrdered : " );
System.out.println(response);
}
|
Copier après la connexion
8. 🎜>
9. Rechercher par identifiant
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | /**
* 高亮关键字
* @param client
*/
private static void searchHightlight(Client client) {
HighlightBuilder highlightBuilder = new HighlightBuilder();
highlightBuilder.field( "title" );
highlightBuilder.field( "description" );
SearchResponse response = client.prepareSearch(index)
.setQuery(QueryBuilders.multiMatchQuery( "开发人员必读" , "title" , "description" ))
.highlighter(highlightBuilder)
.execute()
.actionGet();
System.out.println( "searchHightlight : " );
System.out.println(response);
}
|
Copier après la connexion
10. 🎜>11.
1 2 3 4 5 6 7 8 9 10 | /**
* 根据id查找
* @param client
*/
private static void findById( final Client client) {
String id= "12" ;
GetResponse response = client.prepareGet(index, type, id).get();
System.out.println( "findById" );
System.out.println(response);
}
|
Copier après la connexion
Mise à jour
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!