0

このコードを試してみました URL はhttp://localhost:9200インデックスはレストランの種類はメニューです。を介してパスIDが必要ですsearchbuilder。誰でも私を助けてください。私はこの出力を得ました

722 [main] INFO io.searchbox.client.JestClientFactory - Node Discovery       Disabled...
hai 
io.searchbox.core.SearchResult@35f8a538

しかし、IDデータが欲しい

import io.searchbox.client.JestClient;
import io.searchbox.client.JestClientFactory;
import io.searchbox.client.JestResult;
import io.searchbox.client.config.HttpClientConfig;
import io.searchbox.core.Search;
import io.searchbox.core.SearchResult;
import io.searchbox.core.SearchResult.Hit;

import java.io.IOException;
import java.sql.Date;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import jesttask.*;

import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;

import com.google.gson.JsonObject;

public class Elasticsearch 
{
public static void main( String[] args ) throws Exception 
{
    JestClient client = openClient();

    JsonObject json=new JsonObject();

検索コードはこちら

   /* Search search = (Search) new Search.Builder("http://localhost:9200/")
    // multiple index or types can be added.
    .addIndex("articles")
    .addType("article")
    .build();

JestResult result = client.execute(search);*/

    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    searchSourceBuilder.query(QueryBuilders.queryString("AVE5MpaA7X6GJDWpFptT"));
    Search search = (Search) new Search.Builder(searchSourceBuilder.toString())
                                    // multiple index or types can be added.
                                    .addIndex("restarent")
                                    .addType("menu")
                                    .build();
    System.out.println("hai");
    JestResult result = client.execute(search);
    System.out.println(result);


    List<SearchModel> reviewList = result.getSourceAsObjectList(SearchModel.class);
    for(SearchModel review: reviewList){
        System.out.println("h");
      System.out.println("search result is " + review);
    }

    /*
    SearchHit[] results = result.getHits().getHits();
    for (SearchHit hit : results) {
      System.out.println(hit.getId());    //prints out the id of the document
      Map<String,Object> result2 = hit.getSource();   //the retrieved document
    }*/

    /*List<SearchModel> sources = result.getSourceAsObjectList(SearchModel.class);

    for (SearchModel source : sources) {
        System.out.println("h");

        System.out.println(source.getTitle() + " -> " + source.getItem());
    }*/

    client.shutdownClient();
}

private static JestClient openClient()
{ 
 HttpClientConfig clientConfig = new HttpClientConfig.Builder("http://localhost:9200/")
      .multiThreaded(true).build();
 JestClientFactory factory = new JestClientFactory();

 factory.setHttpClientConfig(clientConfig);
 JestClient jestClient = factory.getObject();

 return jestClient;
}
}

私のモデルクラスは

import io.searchbox.annotations.JestId;

import com.fasterxml.jackson.annotation.JsonProperty;

public class SearchModel {
@JestId
private String id;

@JsonProperty("price")
private double price;
@JsonProperty("quantity")
private String quantity;

@JsonProperty("item")
private String item;




public String getId() {
    return id;
}
public void setId(String id) {
    this.id = id;
}
public double getPrice() {
    return price;
}
public void setPrice(Double price) {
    this.price = price;
}

public String getQuantity() {
    return quantity;
}
public void setQuantity(String quantity) {
    this.quantity = quantity;
}

public String getItem() {
    return item;
}
public void setItem(String item) {
    this.item = item;
}


}
4

5 に答える 5

0

ブラウザで単純な GET 呼び出しを行うと、インデックス エンドポイントが正常に機能しているかどうかを確認できます。

http://localhost:9200/yourIndexName

すべてがうまくいっている場合 (http ステータス 200 を取得する必要があります)、変更を試してください

QueryBuilders.queryString("AVE5MpaA7X6GJDWpFptT")

QueryBuilders.matchQuery("id", "AVE5MpaA7X6GJDWpFptT")

注: 推測であり、テストされていません。

編集:シンタックス「restarent」xDですべてがうまくいくかどうかを確認することもできます

于 2015-12-19T18:24:01.497 に答える
0
            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
            searchSourceBuilder.query(QueryBuilders.matchQuery("url", "https://www.elastic.co/blog/*"));

これは機能します。

于 2017-05-28T13:44:23.033 に答える