gpt4 book ai didi

java - Elasticsearch Spring启动

转载 作者:行者123 更新时间:2023-12-03 02:16:47 24 4
gpt4 key购买 nike

我正在尝试使用Java API转换此 Elasticsearch 查询

{
"query": {
"function_score": {
"query": {
"match_all": {}
},
"functions": [
{
"random_score": {}
}
],
"score_mode": "sum"
}
}
}
这就是我所做的
  QueryBuilder query = QueryBuilders.functionScoreQuery(QueryBuilders.matchAllQuery(), ScoreFunctionBuilders.randomFunction());
我试图以随机顺序返回所有匹配项,但似乎不起作用

最佳答案

请参阅以下示例以及我观察到的内容。它应该会有所帮助。我已经创建了一个带有myfield类型的单个字段text的示例映射。
样本文件:

POST my_function_index/_doc/1
{
"myfield": "Doesn't remind me of anything"
}

POST my_function_index/_doc/2
{
"myfield": "I like playing in sand, what's mine is yours"
}

POST my_function_index/_doc/3
{
"myfield": "I like travelling backwards in the fog"
}
Java API代码
package com.example.demo;

import java.io.IOException;

import org.apache.http.HttpHost;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.lucene.search.function.FunctionScoreQuery.ScoreMode;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.functionscore.FunctionScoreQueryBuilder;
import org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;

public class FunctionScore {

public static void main(String[] args) throws IOException {

RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));

SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();

//Below is the logic for creating functionScore via API
FunctionScoreQueryBuilder functionScore = QueryBuilders.functionScoreQuery(QueryBuilders.matchAllQuery(), ScoreFunctionBuilders.randomFunction());
functionScore.scoreMode(ScoreMode.SUM);
sourceBuilder.query(functionScore);

SearchRequest searchRequest = new SearchRequest();
searchRequest.indices("my_function_index");
searchRequest.source(sourceBuilder);

//The API Response you get
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
SearchHit[] searchHits = searchResponse.getHits().getHits();

//Printing the results
for(SearchHit theHit: searchHits) {
System.out.println("-----------------------------------------------------");
System.out.println(theHit);
System.out.println("-----------------------------------------------------");
}

}

}
观察到的响应:
以下是两个示例响应,在这些响应中您获得相同的文档顺序,但是请注意其 _score值。它们是不同的。
请注意,每次运行上述API时,都会得到不同的响应。我想由于我的索引大小为3,所以在某些时候我必然会获得相同的顺序。
如果您有更多的文档,变体将更多。
第一个实例
-----------------------------------------------------
{
"_index" : "my_function_index",
"_type" : "_doc",
"_id" : "3",
"_score" : 0.8976933,
"_source" : {
"myfield" : "I like travelling backwards in the fog"
}
}
-----------------------------------------------------
-----------------------------------------------------
{
"_index" : "my_function_index",
"_type" : "_doc",
"_id" : "2",
"_score" : 0.85642433,
"_source" : {
"myfield" : "I like playing in sand, what's mine is yours"
}
}
-----------------------------------------------------
-----------------------------------------------------
{
"_index" : "my_function_index",
"_type" : "_doc",
"_id" : "1",
"_score" : 0.42347366,
"_source" : {
"myfield" : "Doesn't remind me of anything"
}
}
-----------------------------------------------------
二审:
-----------------------------------------------------
{
"_index" : "my_function_index",
"_type" : "_doc",
"_id" : "3",
"_score" : 0.8440073,
"_source" : {
"myfield" : "I like travelling backwards in the fog"
}
}
-----------------------------------------------------
-----------------------------------------------------
{
"_index" : "my_function_index",
"_type" : "_doc",
"_id" : "2",
"_score" : 0.79675066,
"_source" : {
"myfield" : "I like playing in sand, what's mine is yours"
}
}
-----------------------------------------------------
-----------------------------------------------------
{
"_index" : "my_function_index",
"_type" : "_doc",
"_id" : "1",
"_score" : 0.7430876,
"_source" : {
"myfield" : "Doesn't remind me of anything"
}
}
-----------------------------------------------------

关于java - Elasticsearch Spring启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63413269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com