私はelasticSearchでSpringデータをテストしています。ES サーバーは、同じ部屋のリモート サーバーで実行されています。
エイリアスの下に、1 日に 1 つのインデックスを作成しています。シンプルなツイートを探しています。しかし、 a を試してみると、findOne()
常に が返されるため、うまくいかないようですnull
。
また、findAll(ids)
エイリアスを使用しているため機能しませんが、ドキュメントでこれを処理する方法が見つかりません。
何を達成したいですか?
さしあたっては、指定されたid_str
.
count メソッドは機能しますが、findOne は機能しません
ここに私の質問が
あります 動作
させるにはどうすればよいfindOne()
ですか?
このエイリアスで複数のインデックスを検索するには、どの方法を使用すればよいですか?
ESでデータがどのように見えるかを次に示します
{
"id_str" : "135131315100051",
"..." : "...",
"user" : {
"id_str" : "15843643228"
"..." : "..."
}
}
私のモデル
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
@Document(indexName = "alias", type = "tweets")
public class Tweet
{
@Id
@Field(type = FieldType.String)
private String idStr;
public String getIdStr()
{
return idStr;
}
public void setIdStr(final String idStr)
{
this.idStr = idStr;
}
@Override
public String toString()
{
return "{ id_str : " + idStr + " }";
}
}
エイリアスはalias
、インデックスはalias_dd-mm-yyyy
私のリポジトリ
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import com.thales.communications.osintlab.bigdata.webservices.models.Tweet;
public interface EsTweetRepository extends ElasticsearchRepository<Tweet, String>
{
Tweet findByIdStr(String idStr);
}
私のテスト
@Test
public void shouldReturnATweet()
{
//lets try to search same record in elasticsearch
final Tweet tweet1 = tweetRepository.findOne("593768150975512576");
//final Tweet tweet = tweetRepository.findByIdStr("593897683661824000");
System.out.println("Count is " + tweet1);
//System.out.println("Count is " + tweetRepository.count());
// System.out.println(tweet.toString());
}
もちろん、テスト済みの ID を持つツイートは存在します :)。そして、count()
正常に動作しています。
ご協力いただきありがとうございます
編集
これが私が持っているもののサンプルアプリケーションです: https://github.com/ogdabou/es-stackoverflow-sample
spring-data-elasticsearch は、フィールド「id_str」ではなく、フィールド「_id」を探しているようです。メソッドの解析が原因かもしれません(そこを見てください)。json の「id_str」属性を idStr Java モデルにバインドする方法を探しています。