Springdata-----Operation ES

Source: Internet
Author: User

One: Configuration springdata-es

Elasticseach-jpa.xml

<?xml version= "1.0" encoding= "UTF-8"?>
<beans xmlns= "Http://www.springframework.org/schema/beans"
Xmlns:xsi= "Http://www.w3.org/2001/XMLSchema-instance"
xmlns:context= "Http://www.springframework.org/schema/context"
Xmlns:mvc= "Http://www.springframework.org/schema/mvc"
Xmlns:jpa= "HTTP://WWW.SPRINGFRAMEWORK.ORG/SCHEMA/DATA/JPA"
Xmlns:elasticsearch= "Http://www.springframework.org/schema/data/elasticsearch"
Xsi:schemalocation= "
Http://www.springframework.org/schema/beans
Http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
Http://www.springframework.org/schema/context
Http://www.springframework.org/schema/context/spring-context-4.3.xsd
Http://www.springframework.org/schema/mvc
Http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
Http://www.springframework.org/schema/data/jpa
Http://www.springframework.org/schema/data/jpa/spring-jpa-1.8.xsd
Http://www.springframework.org/schema/data/elasticsearch
Http://www.springframework.org/schema/data/elasticsearch/spring-elasticsearch-1.0.xsd
">
<context:component-scan base-package= "Com.sf.heros.mq.consumer"/> Scan Package
<elasticsearch:transport-client id= "Client" cluster-name= "Elasticsearch"
Cluster-nodes= "127.0.0.1:9300" client-transport-sniff= "false"/> Configure the link port (default is 9200, but we need to interact with it, to use the configuration file to write that port, Mine is 9300)
<elasticsearch:repositories base-package= "Com.sf.heros.mq.consumer.dao" Springdata Operation ES Interface class
elasticsearch-template-ref= "Elasticsearchtemplate"/>
<bean name= "Elasticsearchtemplate"
class= "Org.springframework.data.elasticsearch.core.ElasticsearchTemplate" >
<constructor-arg name= "Client" ref= "client"/> es operation class
</bean>

</beans>


2: Interface class

Userdao. Java (add-and-revise method is consistent with other springdata, findby, etc. syntax reference springdata)

Public interface Userdao extends elasticsearchrepository<user,integer> {
List<user> Findbyarticleinfid (Integer aid);
}

3: Entity class


@Document (IndexName = "Article_inf_index", type = "Articleinf")
@Setting (Settingpath = "Elasticsearch-analyser.json")
public class User implements Serializable {
Elasticsearch
@org. springframework.data.annotation.Id
Private Integer Articleinfid;

@Field (type = fieldtype.string)//Use Ngram for single word segmentation
Private String ArticleTitle;

@Field (type = fieldtype.date, store = true, format = dateformat.custom, pattern = "Yyyy-mm-dd HH:mm:ss")
@JsonFormat (shape = JsonFormat.Shape.STRING, pattern = "Yyyy-mm-dd HH:mm:ss")
Private Date Releasetime;

Public Integer Getarticleinfid () {
return articleinfid;
}

public void Setarticleinfid (Integer articleinfid) {
This.articleinfid = Articleinfid;
}

Public String Getarticletitle () {
return articletitle;
}

public void Setarticletitle (String articletitle) {
This.articletitle = ArticleTitle;
}

Public Date Getreleasetime () {
return releasetime;
}

public void Setreleasetime (Date releasetime) {
This.releasetime = Releasetime;
}

@Override
Public String toString () {
Return "user{" +
"Articleinfid=" + Articleinfid +
", articletitle= '" + articletitle + "+
", releasetime=" + Releasetime +
‘}‘;
}
}


4:serverce
 @Service ("Testservice") 
public class Elasticsearchservice {
@Autowired
private Userdao Userdao;
public void Add (user user) {
Userdao.save (user);


Public list<user> Search (Integer aid) {
pageable pageable=new pageable () {
@Override
Public int getnumberofpages () {
return 0;


@Override
Public pageformat getpageformat (int pageIndex) throws Indexoutofboundsexcept Ion {
return null;


@Override
Public Printable getprintable (int pageIndex) throws Indexoutofboundsexceptio n {
return null;
}
};
Return This.userDao.findByArticleInfId (aid);
}

Public user searchbyquery (user user) {
Boolquerybuilder qb= querybuilders. Boolquery ();
Qb.must (Querybuilders.matchquery ("Articleinfid", 12));
Iterable<user> search = Userdao.search (QB);
Return Search.iterator (). Next ();
}
}
Boolquerybuilder Method:
1.matchAllQuery () Matchallquery () method to match all documents
2.matchQuery ("Filedname", "value") matches a single field, matching the document with the field named Filedname, value =
3.multiMatchQuery (Object text, String ... fieldnames) multiple fields match a value

QueryBuilder QueryBuilder = querybuilders.multimatchquery ("Music", "name", "interest"); Search for a document containing music in name or interest (must be consistent with music)

4.wildcardQuery () fuzzy query matches a single character, * matches multiple characters

5. Using Boolquerybuilder for compound queries

Using must:

  1. Fuzzy query
  2. Wildcardquerybuilder QueryBuilder1 = Querybuilders.wildcardquery (
  3. " name", "*jack*"); //Search for a document containing Jack in the name
  4. Wildcardquerybuilder QueryBuilder2 = Querybuilders.wildcardquery (
  5. " interest", "*read*"); //Search for documents containing read in interest
  6. Boolquerybuilder Boolquerybuilder = Querybuilders.boolquery ();
  7. The name must contain a jack,interest that must contain read, which is equivalent to and
  8. Boolquerybuilder.must (QueryBuilder1);
  9. Boolquerybuilder.must (QUERYBUILDER2);

Using should:

  1. Wildcardquerybuilder QueryBuilder1 = Querybuilders.wildcardquery (
  2. " name", "*jack*"); //Search for a document containing Jack in the name
  3. Wildcardquerybuilder QueryBuilder2 = Querybuilders.wildcardquery (
  4. " interest", "*read*"); //Search for documents containing read in interest
  5. Boolquerybuilder Boolquerybuilder = Querybuilders.boolquery ();
  6. The name contains jack or interest containing read, which is equivalent to or
  7. Boolquerybuilder.should (QueryBuilder1);
  8. Boolquerybuilder.should (QUERYBUILDER2);



Springdata-----Operation ES

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.