国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

RestHighLevelClient實(shí)現(xiàn)ElasticSearch關(guān)聯(lián)查詢之父子文檔

這篇具有很好參考價(jià)值的文章主要介紹了RestHighLevelClient實(shí)現(xiàn)ElasticSearch關(guān)聯(lián)查詢之父子文檔。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

RestHighLevelClient實(shí)現(xiàn)ElasticSearch關(guān)聯(lián)查詢之父子文檔今天分享,承接上一篇內(nèi)容:

DSL操作關(guān)聯(lián)查詢

這篇我們通過(guò)javaAPI的方式實(shí)現(xiàn):

一、springboot 配置

1、pom文件引用:

      <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.9.3</version>
            <exclusions>
                <exclusion>
                    <groupId>org.elasticsearch</groupId>
                    <artifactId>elasticsearch</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.elasticsearch.client</groupId>
                    <artifactId>elasticsearch-rest-client</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-client</artifactId>
            <version>7.9.3</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>7.9.3</version>
        </dependency>

        <!-- elasticsearch 新版本官方sdk,版本號(hào)需與使用的es版本一致 -->
        <dependency>
            <groupId>co.elastic.clients</groupId>
            <artifactId>elasticsearch-java</artifactId>
            <version>7.17.0</version>
        </dependency>

2、初始化配置es操作類


import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ElasticSearchConfig {

    @Bean
    public RestHighLevelClient restHighLevelClient(){
 
        RestClientBuilder builder=RestClient.builder(
               // new HttpHost("116.204.80.158", 9200, "http"),
                new HttpHost("116.204.80.155", 9200, "http"));
        CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic", "123456"));
        builder.setHttpClientConfigCallback(f -> f.setDefaultCredentialsProvider(credentialsProvider));
        RestHighLevelClient client = new RestHighLevelClient( builder);
        return client;
    }
}

3、業(yè)務(wù)層引用

    @Qualifier("restHighLevelClient")
    @Autowired
    private RestHighLevelClient client;

    private static final String indexName = "test_nandao_index";

    private static final String tableName = "UserInfo";
    private static final String workTableName = "WorkInfo";
    private static final String schoolTableName = "SchoolInfo";
    private static final String UserWorkRelation = tableName+"_"+workTableName+"_relation";

二、核心偽代碼

1、創(chuàng)建父子索引

@Override
    public boolean createIndex(String index) throws IOException {
        //創(chuàng)建json數(shù)

        XContentBuilder mapping = XContentFactory.jsonBuilder()
                .startObject()

                .startObject("properties")

                .startObject("content")
                .field("type","text")
                .endObject()

                .startObject("title")
                .field("type","text")
                .endObject()

                .startObject(tableName+"_"+workTableName+"_relation")
                .field("type","join")
                .startObject("relations")
               // .field("blog","comment")
                .field(tableName,workTableName)
                .endObject()
                .endObject()

                .endObject()

                .endObject();

        CreateIndexRequest request = new CreateIndexRequest(index)
                .settings(Settings.builder()
                        .put("number_of_shards", 2)
                        .put("number_of_replicas", 1)
                        .build())
                .mapping(mapping)
                ;

        //1.創(chuàng)建索引請(qǐng)求
      //  CreateIndexRequest request = new CreateIndexRequest(index);
        String string = request.aliases().toString();
        //2.客戶端執(zhí)行請(qǐng)求IndicesClient,請(qǐng)求后獲得相應(yīng)
        log.info("請(qǐng)求:{}", JSONObject.toJSONString(request));
        log.info("請(qǐng)求:{}",request.toString());
        CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
        log.info("返回:{}", JSON.toJSONString(response));
        return response.isAcknowledged();
    }

kibana查看

GET /nandao_parent_sub_index/_mapping

2、判斷索引是否存在

   @Override
    public boolean isExit(String index) throws IOException {
        GetIndexRequest request = new GetIndexRequest(index);
        boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
        return exists;
    }

3、刪除索引

    @Override
    public boolean delete(String index) throws IOException {
        DeleteIndexRequest request = new DeleteIndexRequest(index);
        AcknowledgedResponse delete = client.indices().delete(request, RequestOptions.DEFAULT);
        return delete.isAcknowledged();
    }

4、添加父文檔

 @Override
    public boolean addDocument(String index, String id, Object object) throws IOException {
        IndexRequest request = new IndexRequest(index);
        //規(guī)則 一般的文檔形如 put /index/_doc/1
        //request.id(id);//如果不設(shè)置id的話會(huì)自動(dòng)分配id
        request.timeout("1s");//設(shè)置超時(shí)時(shí)間
        System.out.println("JSON.toJSONString(object):"+ JSON.toJSONString(object));
        //將我們的數(shù)據(jù)放入請(qǐng)求Json中
        JSONObject jsonObject = (JSONObject) JSONObject.toJSON(object);
        //添加join關(guān)聯(lián)索引
        JSONObject relationObject = new JSONObject();
       // relationObject.put(tableName,workTableName);
        relationObject.put("name",tableName);
        jsonObject.put(UserWorkRelation,relationObject);
        request.source(JSON.toJSONString(jsonObject), XContentType.JSON);
        log.info("請(qǐng)求:{}", JSONObject.toJSONString(request));
        log.info("請(qǐng)求1:{}", JSON.toJSONString(request));
        log.info("請(qǐng)求2:{}", JSON.toJSONString(jsonObject));
        //客戶端發(fā)送請(qǐng)求,獲取相應(yīng)的結(jié)果
        IndexResponse response = client.index(request, RequestOptions.DEFAULT);
        return response.getShardInfo().getSuccessful()>0?true:false;
    }

5、更新父文檔

    @Override
    public boolean updateDocument(UserInfoVo user, String index, String id) throws IOException {
        UpdateRequest request = new UpdateRequest(index, id);
        request.timeout("1s");

        //將我們的數(shù)據(jù)放入請(qǐng)求Json中
        JSONObject jsonObject = (JSONObject) JSONObject.toJSON(user);
        //添加join關(guān)聯(lián)索引
        JSONObject relationObject = new JSONObject();
        // relationObject.put(tableName,workTableName);
        relationObject.put("name",tableName);
        jsonObject.put(UserWorkRelation,relationObject);

        request.doc(JSON.toJSONString(jsonObject), XContentType.JSON);
        UpdateResponse update = client.update(request, RequestOptions.DEFAULT);
        return update.getShardInfo().getSuccessful()>0?true:false;
    }

6、添加子文檔

    @Override
    public boolean addDocumentSub(String index, String parentId, Object object) throws IOException {
        IndexRequest request = new IndexRequest(index).routing(parentId);//設(shè)置索引和路由
        //規(guī)則 一般的文檔形如 put /index/_doc/1
        //request.id(id);//如果不設(shè)置id的話會(huì)自動(dòng)分配id
        request.timeout("1s");//設(shè)置超時(shí)時(shí)間
        System.out.println("JSON.toJSONString(object):"+ JSON.toJSONString(object));
        //將我們的數(shù)據(jù)放入請(qǐng)求Json中
        JSONObject jsonObject = (JSONObject) JSONObject.toJSON(object);
        //添加join關(guān)聯(lián)索引
        JSONObject relationObject = new JSONObject();
        relationObject.put("name",workTableName);
        relationObject.put("parent",parentId);
        jsonObject.put(UserWorkRelation,relationObject);
        request.source(JSON.toJSONString(jsonObject), XContentType.JSON);
        log.info("請(qǐng)求:{}", JSONObject.toJSONString(request));
        log.info("請(qǐng)求1:{}", JSON.toJSONString(request));
        log.info("請(qǐng)求2:{}", JSON.toJSONString(jsonObject));
        //客戶端發(fā)送請(qǐng)求,獲取相應(yīng)的結(jié)果
        IndexResponse response = client.index(request, RequestOptions.DEFAULT);
        return response.getShardInfo().getSuccessful()>0?true:false;
    }

創(chuàng)建普通文檔??

    @Override
    public boolean createDocument(String index, Object object) throws IOException {
        IndexRequest request = new IndexRequest(index);
        //規(guī)則 一般的文檔形如 put /index/_doc/1
       // request.id(id);//如果不設(shè)置id的話會(huì)自動(dòng)分配id
        request.timeout("1s");//設(shè)置超時(shí)時(shí)間
        System.out.println("JSON.toJSONString(object):"+ JSON.toJSONString(object));
        //將我們的數(shù)據(jù)放入請(qǐng)求Json中
        request.source(JSON.toJSONString(object), XContentType.JSON);
        //客戶端發(fā)送請(qǐng)求,獲取相應(yīng)的結(jié)果
        IndexResponse response = client.index(request, RequestOptions.DEFAULT);
        return response.getShardInfo().getSuccessful()>0?true:false;
    }

??????7、判斷是否是doc格式

    @Override
    public boolean isdocuexit(String index, String id) throws IOException {
        GetRequest getRequest = new GetRequest(index,id);
        //不獲取返回的_source上下文
        getRequest.fetchSourceContext(new FetchSourceContext(false));
        getRequest.storedFields("_none_");
        return client.exists(getRequest, RequestOptions.DEFAULT);
    }

8、根據(jù)id和索引查詢

    @Override
    public String getDoucumment(String index, String id) throws IOException {
        GetRequest getRequest = new GetRequest(index, id);
        GetResponse response = client.get(getRequest, RequestOptions.DEFAULT);
        return response.getSourceAsString();
    }

9、根據(jù)父id查詢

    @Override
    public String getDoucummentByParentId(String index, TreeMap<String, Object> content,String parentId) throws IOException {
         
        SearchRequest searchRequest = new SearchRequest(index);
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
      
        ParentIdQueryBuilder build = JoinQueryBuilders.parentId("WorkInfo",parentId);
        sourceBuilder.query(build);
        //將查詢條件放入需要查詢中
        searchRequest.source(sourceBuilder);
        System.out.println("dsl===1==="+sourceBuilder.toString());

        //獲取相應(yīng)的數(shù)據(jù)
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        SearchHit[] hits = searchResponse.getHits().getHits();

       // SearchRequest searchRequest = new SearchRequest(index);
        searchResponse.getHits().forEach(hi ->{
            log.info("查詢結(jié)果:{}",hi.getSourceAsString());
        });
        return hits.toString();
    }

對(duì)應(yīng)DSL語(yǔ)句

POST /nandao_parent_sub_index/_search 
{
	"query": {
		"parent_id": {
			"type": "WorkInfo",
			"id": "tYTxYoUBJlO7GBNmNPml"
		}
	}
}

?

10、Has Child 查詢,返回父文檔

    @Override
    public String getDoucummentHasChild(String userName, String index) throws IOException {
        SearchRequest searchRequest = new SearchRequest(index);
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        HasChildQueryBuilder build = JoinQueryBuilders.hasChildQuery("WorkInfo",QueryBuilders.matchQuery("userName", "Jack"), ScoreMode.None);
        sourceBuilder.query(build);
        //將查詢條件放入需要查詢中
        searchRequest.source(sourceBuilder);
        System.out.println("dsl===1==="+sourceBuilder.toString());
        //獲取相應(yīng)的數(shù)據(jù)
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        SearchHit[] hits = searchResponse.getHits().getHits();
        searchResponse.getHits().forEach(hi ->{
            log.info("查詢結(jié)果:{}",hi.getSourceAsString());
        });
        return hits.toString();
    }

對(duì)應(yīng)DSL語(yǔ)句:

POST /nandao_parent_sub_index/_search
{
	"query": {
		"has_child": {
			"type": "WorkInfo",
			"query": {
				"match": {
					"userName": "Jack"
				}
			}
		}
	}
}

?11、Has parent 查詢,返回子文檔

    @Override
    public String getDoucummentHasParent(String userName, String index) throws IOException {
        SearchRequest searchRequest = new SearchRequest(index);
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        HasParentQueryBuilder build= JoinQueryBuilders.hasParentQuery("UserInfo", QueryBuilders.matchQuery("userName", "wangwu"), false);
        sourceBuilder.query(build);
        //將查詢條件放入需要查詢中
        searchRequest.source(sourceBuilder);
        System.out.println("dsl===1==="+sourceBuilder.toString());
        //獲取相應(yīng)的數(shù)據(jù)
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        SearchHit[] hits = searchResponse.getHits().getHits();
        searchResponse.getHits().forEach(hi ->{
            log.info("查詢結(jié)果:{}",hi.getSourceAsString());
        });
        return hits.toString();
    }

對(duì)應(yīng)DSL語(yǔ)句:

GET /nandao_parent_sub_index/_search
{
  "query": {
    "has_parent": {
      "parent_type": "UserInfo",
      "query": {
        "match": {
          "userName": "wangwu"
        }
      }
    }
  }
}

?12、通過(guò)索引查

   @Override
    public String getAllDoucummentByIndex(String index) throws IOException {
        SearchRequest searchRequest = new SearchRequest(index);
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        SearchHit[] hits = searchResponse.getHits().getHits();
        return hits.toString();
    }

13、通過(guò)索引和id刪除文檔

   @Override
    public boolean deleteDocument(String index, String id) throws IOException {
        DeleteRequest request = new DeleteRequest(index,id);
        request.timeout("1s");
        DeleteResponse deleteResponse = client.delete(request, RequestOptions.DEFAULT);
        return deleteResponse.getShardInfo().getSuccessful()>0?true:false;
    }

14、批量添加文檔

    @Override
    public boolean addmoredocument(List<Object> list, String index, String id) throws IOException {
        BulkRequest bulkRequest = new BulkRequest();
        bulkRequest.timeout("1s");
        //批量處理請(qǐng)求
        for (int i=0;i<list.size();i++){
            bulkRequest.add(
                    new IndexRequest(index)
                            //.id(id)
                            .source(JSON.toJSONString(list.get(i)), XContentType.JSON));
        }
        BulkResponse responses = client.bulk(bulkRequest, RequestOptions.DEFAULT);
        //是否失敗 false-沒(méi)有失敗
        return responses.hasFailures()?false:true;
    }

15、termQuery

    @Override
    public List<Map<String, Object>> termQuery(String index, TreeMap<String, Object> content, int size, int from, boolean ishigh) throws IOException {
        SearchRequest searchRequest = new SearchRequest(index);
        //構(gòu)建查詢條件
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        System.out.println(content.firstKey());
        //查詢條件
        TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery(content.firstKey(),content.get(content.firstKey()));
        sourceBuilder.query(termQueryBuilder);
        sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
        //獲取多少條數(shù)據(jù)
        sourceBuilder.size(size);
        //從第幾行開始
        sourceBuilder.from(from);
        //是否要將查詢的結(jié)果中將搜索的關(guān)鍵詞高亮
        if (ishigh){
            HighlightBuilder highlightBuilder = new HighlightBuilder();
            //設(shè)置高亮的屬性
            highlightBuilder.field(content.firstKey());
            //也可以自定義高亮的樣式,這里我使用的是默認(rèn)的方式
            sourceBuilder.highlighter(highlightBuilder);
        }
        System.out.println("dsl===1==="+sourceBuilder.toString());
        //將查詢條件放入需要查詢中
        searchRequest.source(sourceBuilder);
        //獲取相應(yīng)的數(shù)據(jù)
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        SearchHit[] hits = searchResponse.getHits().getHits();

        ArrayList<Map<String, Object>> result = new ArrayList<>();
        for (SearchHit searchHit:hits){
            Map<String, HighlightField> highlightFields = searchHit.getHighlightFields();
            //獲取高亮的信息
            HighlightField property = highlightFields.get(content.firstKey());
            //查詢的元素?cái)?shù)據(jù)(沒(méi)有高亮)
            Map<String, Object> sourceAsMap = searchHit.getSourceAsMap();
            if (ishigh){
                if (property!=null){
                    Text[] fragments = property.fragments();
                    String n_title = "";
                    for (Text text:fragments){
                        n_title += text;
                    }
                    sourceAsMap.put(content.firstKey(),n_title);
                }
            }
            result.add(sourceAsMap);
        }
        System.out.println("result==1===:"+result);
        return result;
    }

16、matchQuery

@Override
    public List<Map<String, Object>> matchQuery(String index, TreeMap<String, Object> content, int size, int from, boolean ishigh) throws IOException {
        SearchRequest searchRequest = new SearchRequest(index);
        //構(gòu)建查詢條件
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        //查詢條件
        MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery(content.firstKey(),content.get(content.firstKey()));

        sourceBuilder.query(matchQueryBuilder);
        sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
        //獲取多少條數(shù)據(jù)
        sourceBuilder.size(size);
        //從第幾行開始
        sourceBuilder.from(from);
        //是否要高亮
        if (ishigh){
            HighlightBuilder highlightBuilder = new HighlightBuilder();
            //設(shè)置高亮的屬性
            highlightBuilder.field(content.firstKey());
            //也可以自定義高亮的樣式,這里我使用的是默認(rèn)的方式
            sourceBuilder.highlighter(highlightBuilder);
        }

        System.out.println("dsl===2==="+sourceBuilder.toString());

        //將查詢條件放入需要查詢中
        searchRequest.source(sourceBuilder);
        //獲取相應(yīng)的數(shù)據(jù)
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        SearchHit[] hits = searchResponse.getHits().getHits();

        ArrayList<Map<String, Object>> result = new ArrayList<>();
        for (SearchHit searchHit:hits){
            Map<String, HighlightField> highlightFields = searchHit.getHighlightFields();
            //獲取高亮的信息
            HighlightField property = highlightFields.get(content.firstKey());
            //查詢的元素?cái)?shù)據(jù)(沒(méi)有高亮)
            Map<String, Object> sourceAsMap = searchHit.getSourceAsMap();
            System.out.println("sourceAsMap===2==="+sourceAsMap);
            if (ishigh){
                if (property!=null){
                    Text[] fragments = property.fragments();
                    String n_title = "";
                    for (Text text:fragments){
                        n_title += text;
                    }
                    sourceAsMap.put(content.firstKey(),n_title);
                }
            }
            result.add(sourceAsMap);
        }
        System.out.println("result==2===:"+result);

        return result;
    }

17、boolmustQuery

@Override
    public List<Map<String, Object>> boolmustQuery(String index, TreeMap<String, Object> content, int size, int from, boolean ishigh) throws IOException {
        SearchRequest searchRequest = new SearchRequest(index);
        //構(gòu)建查詢條件
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        //查詢條件
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
        Set keys = content.keySet();
        for (Object key:keys){
            //將要查詢的條件加入
            boolQueryBuilder.must(QueryBuilders.termQuery((String) key,content.get(key)));
        }
        sourceBuilder.query(boolQueryBuilder);
        sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
        //獲取多少條數(shù)據(jù)
        sourceBuilder.size(size);
        //從第幾行開始
        sourceBuilder.from(from);

        System.out.println("dsl===3==="+sourceBuilder.toString());
        //將查詢條件放入需要查詢中
        searchRequest.source(sourceBuilder);
        //獲取相應(yīng)的數(shù)據(jù)
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        SearchHit[] hits = searchResponse.getHits().getHits();
        ArrayList<Map<String, Object>> result = new ArrayList<>();
        for (SearchHit searchHit:hits){
            Map<String, HighlightField> highlightFields = searchHit.getHighlightFields();
            //獲取高亮的信息
            HighlightField property = highlightFields.get(content.firstKey());
            //查詢的元素?cái)?shù)據(jù)(沒(méi)有高亮)
            Map<String, Object> sourceAsMap = searchHit.getSourceAsMap();
            System.out.println("sourceAsMap===2==="+sourceAsMap);
            if (ishigh){
                if (property!=null){
                    Text[] fragments = property.fragments();
                    String n_title = "";
                    for (Text text:fragments){
                        n_title += text;
                    }
                    sourceAsMap.put(content.firstKey(),n_title);
                }
            }
            result.add(sourceAsMap);
        }

        System.out.println("result==3===:"+result);
        return result;
    }

到此關(guān)聯(lián)關(guān)系處理基本分享完畢,同時(shí)也可以參考這篇文章:

es父子查詢處理

下篇我們分析es的理論與架構(gòu)組成敬請(qǐng)期待!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-690248.html

到了這里,關(guān)于RestHighLevelClient實(shí)現(xiàn)ElasticSearch關(guān)聯(lián)查詢之父子文檔的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 如果elasticsearch要實(shí)現(xiàn)在大于兩個(gè)索引之間關(guān)聯(lián)查詢?cè)趺磳?shí)現(xiàn)

    Elasticsearch可以通過(guò)多種方式在多個(gè)索引之間進(jìn)行關(guān)聯(lián)查詢。 一種常用的方法是使用關(guān)聯(lián)查詢(join query), 這需要在索引和類型中使用 _join 字段來(lái)存儲(chǔ)關(guān)聯(lián)關(guān)系。 另一種方法是使用查詢時(shí)連接(query time join),使用過(guò)濾器上下文來(lái)連接不同索引中的文檔。 還可以使用 Elasticsearch 的聚

    2024年02月08日
    瀏覽(35)
  • SpringBoot+Elasticsearch使用resthighlevelclient對(duì)象刪除指定的文檔數(shù)據(jù)

    使用客戶端刪除 在 Kibana 中,你可以使用 Dev Tools 或者 Console 來(lái)執(zhí)行 Elasticsearch 查詢和刪除操作。 ? 以下是一個(gè)使用 Dev Tools 執(zhí)行刪除文檔的示例: ? 1.打開 Kibana,轉(zhuǎn)到左側(cè)導(dǎo)航欄的 “Dev Tools” 或者 “Console”。 ? 2.在 Dev Tools 或者 Console 中輸入如下刪除請(qǐng)求: 請(qǐng)?zhí)鎿Q /

    2024年01月23日
    瀏覽(22)
  • SpringBoot+Elasticsearch使用resthighlevelclient對(duì)象查詢條件為“且+或”

    查詢年齡為15或者16或者17或者18的且班級(jí)為1班的學(xué)生信息 首先,確保您的項(xiàng)目中包含了 Elasticsearch 的依賴: 然后,您可以創(chuàng)建一個(gè)包含查詢邏輯的服務(wù)類。假設(shè)您有一個(gè)名為 StudentService 的服務(wù)類: 在上述代碼中,您需要替換 your_index_name 為實(shí)際的 Elasticsearch 索引名稱,并根

    2024年01月25日
    瀏覽(23)
  • Elasticsearch學(xué)習(xí)-父子文檔

    Elasticsearch學(xué)習(xí)-父子文檔

    elasticsearch父子文檔處理 join 一、背景 二、需求 三、前置知識(shí) 四、實(shí)現(xiàn)步驟 1、創(chuàng)建 mapping 2、添加父文檔數(shù)據(jù) 3、添加子文檔 4、查詢文檔 1、根據(jù)父文檔id查詢它下方的子文檔 2、has_child返回滿足條件的父文檔 3、has_parent返回滿足父文檔的子文檔 五、Nested Object 和 join 對(duì)比 六

    2024年02月06日
    瀏覽(16)
  • ElasticSearch第五講 ES nested嵌套文檔與父子文檔處理

    在ES中,處理實(shí)體之間的關(guān)系并不像關(guān)系型存儲(chǔ)那樣明顯。在關(guān)系數(shù)據(jù)庫(kù)中的黃金準(zhǔn)則 - 數(shù)據(jù)規(guī)范化,在ES中并不適用。在處理關(guān)聯(lián)關(guān)系,嵌套對(duì)象和父子關(guān)聯(lián)關(guān)系中,我們會(huì)討論幾種可行方案的優(yōu)點(diǎn)和缺點(diǎn)。 緊接著在為可擴(kuò)展性而設(shè)計(jì)中,我們會(huì)討論ES提供的一些用來(lái)快速靈

    2024年02月02日
    瀏覽(22)
  • elasticsearch 父子文檔使用must not 正確姿勢(shì)

    elasticsearch 父子文檔使用must not 正確姿勢(shì)

    1、基于elasticsearch 父子文檔進(jìn)行子條件查詢父文檔 2、需要查詢出子文檔不存在的父文檔 1、父文檔clue_list 關(guān)聯(lián)很多的子文檔,我們用roam子文檔做測(cè)試! 2、roam子文檔的結(jié)構(gòu) 需求是查詢出roam子文檔不存在的數(shù)據(jù),由于我們es的所有數(shù)據(jù)companyId == 1 我們可以用must not來(lái)排除 co

    2024年02月05日
    瀏覽(18)
  • 記錄el-select+el-tree復(fù)選框,支持模糊查詢,懶加載,樹父子節(jié)點(diǎn)不關(guān)聯(lián),不全選

    記錄el-select+el-tree復(fù)選框,支持模糊查詢,懶加載,樹父子節(jié)點(diǎn)不關(guān)聯(lián),不全選

    需求:一個(gè)機(jī)構(gòu)下拉菜單,一個(gè)人員下拉菜單,默認(rèn)帶入當(dāng)前登錄用戶的機(jī)構(gòu)和人員。機(jī)構(gòu)下拉菜單為兩個(gè)接口,模糊查詢?yōu)橐粋€(gè)接口不包含懶加載,默認(rèn)非模糊查詢情況下為一個(gè)接口,點(diǎn)擊節(jié)點(diǎn)懶加載。機(jī)構(gòu)下拉菜單數(shù)據(jù)變動(dòng)更新人員下拉菜單數(shù)據(jù)。日期默認(rèn)為當(dāng)天

    2024年01月15日
    瀏覽(46)
  • 【ElasticSearch】JavaRestClient實(shí)現(xiàn)文檔查詢、排序、分頁(yè)、高亮

    【ElasticSearch】JavaRestClient實(shí)現(xiàn)文檔查詢、排序、分頁(yè)、高亮

    先初始化JavaRestClient對(duì)象: 代碼和DSL對(duì)應(yīng)上就是: 運(yùn)行結(jié)果: 然后是對(duì)結(jié)果的解析,對(duì)照響應(yīng)結(jié)果: 示例代碼: 運(yùn)行結(jié)果: 總結(jié): 構(gòu)建DSL是通過(guò)HighLevelRestClient中的resource()方法來(lái)實(shí)現(xiàn)的,這里包含了查詢、排序、分頁(yè)、高亮等操作 構(gòu)建查詢條件的核心部分,即查詢類型,

    2024年02月14日
    瀏覽(30)
  • SpringBoot整合RestHighLevelClient實(shí)現(xiàn)查詢操作

    ?? @ 作者: 一恍過(guò)去 ?? @ 主頁(yè): https://blog.csdn.net/zhuocailing3390 ?? @ 社區(qū): Java技術(shù)棧交流 ?? @ 主題: SpringBoot整合RestHighLevelClient實(shí)現(xiàn)查詢操作 ?? @ 創(chuàng)作時(shí)間: 2022年08月14日 為了方便查詢操作,創(chuàng)建索引叫做: nba ,并且添加數(shù)據(jù),http請(qǐng)求如下: 結(jié)果: term 查詢被用于

    2024年02月04日
    瀏覽(15)
  • Elasticsearch之join關(guān)聯(lián)查詢

    目錄 一、join總述 1、關(guān)系類比 2、使用限制 3、性能問(wèn)題 二、Mapping 1、舉例說(shuō)明 ?2、mapping釋義 三、插入數(shù)據(jù) 1、插入父文檔 2、插入子文檔 四、關(guān)聯(lián)查詢 1、has_parent查詢(父查子) 3、has_child查詢(子查父) 目錄 一、join總述 1、關(guān)系類比 2、使用限制 3、性能問(wèn)題 二、Mapp

    2024年02月03日
    瀏覽(30)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包