gpt4 book ai didi

elasticsearch - Elasticsearch 和Twitter数据示例

转载 作者:行者123 更新时间:2023-12-03 00:13:01 24 4
gpt4 key购买 nike

我正在学习 flex 搜索,并且正在关注the next tutorial。在该教程中,将Twiter的推文用作示例数据。方法tweetJsonList返回示例数据。我试图将其保存在索引“tweets_juan”中,然后键入“tweet”。该应用程序运行没有问题,但是当我使用(http://localhost:9200/tweets_juan/tweet/_search?q= :)搜索所有文档时,我什么都没找到。您能帮我验证一下这里发生了什么吗?

public class App 
{
@SuppressWarnings("unchecked")
public static void main( String[] args ) throws TwitterException, UnknownHostException
{
System.out.println( "Hello World!" );
List<String> tweetJsonList = searchForTweets();

Client client = TransportClient.builder().build()
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));
String index = "tweets_juan";
client.admin().indices()
.create(new CreateIndexRequest(index))
.actionGet();
save(client, tweetJsonList, index);
searchExample(client);
}

public static void save(Client client, List<String> tweetJsonList, String index) {

BulkRequestBuilder bulkRequestBuilder = client.prepareBulk().setRefresh(true);
for (String data : tweetJsonList) {
String indexName = index;
String typeName = "tweet";

String json = new Gson().toJson(data);
System.out.println("Juan Debug:" + data);
bulkRequestBuilder.add(client.prepareIndex(indexName, typeName).setSource(json));
}
bulkRequestBuilder.execute().actionGet();
}


public static void searchExample(Client client) {
BoolQueryBuilder queryBuilder = QueryBuilders
.boolQuery()
.must(termsQuery("text", "Baloncesto"));

SearchResponse searchResponse = client.prepareSearch("tweets_juan")
.setQuery(queryBuilder)
.setSize(25)
.execute()
.actionGet();
}

public static List searchForTweets() throws TwitterException {
Twitter twitter = new TwitterFactory().getInstance();
Query query = new Query("mundial baloncesto");
List tweetList = new ArrayList<>();
for (int i = 0; i < 10; i++) {
QueryResult queryResult = twitter.search(query);
tweetList.addAll(queryResult.getTweets());
if (!queryResult.hasNext()) {
break;
}
query = queryResult.nextQuery();
}
Gson gson = new Gson();

return (List) tweetList.stream().map(gson::toJson).collect(Collectors.toList());
}
}

最佳答案

您需要先提供更多信息,然后任何人才能回答您的问题。

由于未使用任何显式映射,因此默认情况下必须对字段进行分析。因此,您的文本字段将被标记为多个术语。

  • 使用“全部匹配”查询来查看已对哪些数据建立索引。
  • 术语查询用于完全匹配(包括精确的大小写),并且您正在尝试对无法使用的已分析字段“文本”运行术语查询。
  • 尝试在文本字段上使用匹配或匹配短语查询,看看是否返回任何结果。
  • 关于elasticsearch - Elasticsearch 和Twitter数据示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39188679/

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