Elastic Searchにドキュメントを追加するにはどうすればよいですか?

知識探求者

こんにちは私はMavenプロジェクトを持っています。ElasticSearchを試してみようとしています。だから私は埋め込まれたエラスティック検索インスタンスを開始しようとしているJUnitテストクラスを持っています。私はcarsという名前のインデックスを作成することができ、carsインデックスにcarと入力します。私がやりたいのは、100台の車をインデックスに入れることです。

以下は私のコードです。

public class ElasticSearchTest {

    private static EmbeddedElastic embeddedElastic;

    @BeforeClass
    public static void init() throws IOException, InterruptedException {

        embeddedElastic = EmbeddedElastic.builder().withElasticVersion("6.1.1")
                .withSetting(PopularProperties.TRANSPORT_TCP_PORT, 9350)
                .withSetting(PopularProperties.CLUSTER_NAME, "my_cluster")
                .withStartTimeout(2, TimeUnit.MINUTES)
                  .withIndex("cars", IndexSettings.builder()
                            .withType("car", getSystemResourceAsStream())
                            .build())
                .build()
                .start();

    }

    private static InputStream getSystemResourceAsStream() throws FileNotFoundException {

        ClassLoader classloader = Thread.currentThread().getContextClassLoader();
        InputStream is = classloader.getResourceAsStream("car-mapping.json");
        return is;
    }

    @Test
    public void test() {
        System.out.println("Hello world");
    }

    @AfterClass
    public static void close() {
        embeddedElastic.stop();
    }

}

car-mapping.json

{
  "car": {
    "properties": {
      "manufacturer": {
        "type": "text",
        "index": "false"
      },
      "model": {
        "type": "text",
        "index": "true"
      },
      "description": {
        "type": "text"
      }
    }
  }
}

junitテストのデータをインデックスに入力するにはどうすればよいですか?

本当にありがとうございました

マテウスリベイロ

私はあなたを助けるかもしれないいくつかのコードをしました、私はいくつかのテキストエディタを使用したので、いくつかの間違った/不要なインポートがあるかもしれませんが、あなたはそれを行う方法についてのアイデアを得ることができます。

package your.package;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;

import javax.swing.text.MaskFormatter;

import com.google.gson.JsonObject;
import com.opencsv.CSVReader;

import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.index.IndexRequest;
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.xcontent.XContentType;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.stereotype.Component;
import org.apache.http.HttpHost;


import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;


@Component
public class App implements CommandLineRunner {

    @Override
    public void run(String... args)
            throws Exception, NullPointerException, IllegalStateException, IllegalArgumentException {

        String host = "localhost";

        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(new HttpHost(host, 9200, "http")).setMaxRetryTimeoutMillis(90000000));

        BulkRequest bulk = new BulkRequest();
        IndexRequest indexRequest = null;


        JsonObject jsonDoc = null;
        jsonDoc = new JsonObject();


     //JSON parser object to parse read file
     JSONParser jsonParser = new JSONParser();

     try (FileReader reader = new FileReader("car-mapping.json"))
     {
         //Read JSON file
         Object obj = jsonParser.parse(reader);

         JSONArray carMapping = (JSONArray) obj;

         //Iterate over employee array
         carMapping.forEach(emp -> parseCarMappingObject( (JSONObject) emp ) );

     } catch (FileNotFoundException e) {
         e.printStackTrace();
     } catch (IOException e) {
         e.printStackTrace();
     } catch (ParseException e) {
         e.printStackTrace();
     }


     // Close your parser /  Elastic Client
        jsonParser.close();
        client.close();

  }

  private static void parseCarMappingObject(JSONObject employee)
    {
        //Get employee object within list
        JSONObject properties = (JSONObject) employee.get("properties");

        //Get employee first name
        String manufacturer = (String) employeeObject.get("manufacturer");  

        // Get your data, depending on how your json are.
        // Create one JSON object with the data you want to Index.

        // For example
        jsonDoc.addProperty("manufacturer", manufacturer);

        // Then, Index your Data.

        // I generally use _doc as doc type, you can change to whatever you want
        indexRequest = new IndexRequest("your_index_name", "_doc").source(jsonDoc.toString(),
        XContentType.JSON);


        // If your data is too big, use bulk to index it faster
        bulk.add(indexRequest);

        // Do your logic here to Index it depending on its size.
        if (index % 10000 == 0 && index > 0) {
          client.bulk(bulk, RequestOptions.DEFAULT);
          bulk.requests().clear();
        } else if (index > 740000) {
          client.index(indexRequest, RequestOptions.DEFAULT);
        }
    }

  }

}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Elasticのスクリプトで特別なドキュメントフィールドを使用するにはどうすればよいですか?

分類Dev

1回のAPI呼び出しで複数のドキュメントをElasticに送信するにはどうすればよいですか?

分類Dev

Elastic Searchドキュメントで@はどういう意味ですか?

分類Dev

Elastic Searchで文字列のリスト内を検索するにはどうすればよいですか?

分類Dev

Elastic Searchの条件に一致するバケットの数をカウントするにはどうすればよいですか?

分類Dev

Elastic Searchでこのクエリのようなものにフィルターを追加するにはどうすればよいですか?

分類Dev

このアーキテクチャでElastic Searchのインデックスをコピーするにはどうすればよいですか?

分類Dev

Elastic Searchで検索結果の順序を変更するにはどうすればよいですか?

分類Dev

AWS EC2 / Elastic Beanstalk | ドメインごとにホワイトリストに登録するにはどうすればよいですか?

分類Dev

Elastic Searchサーバーをインターネットに公開するにはどうすればよいですか?

分類Dev

Elastic Search 6.1用のICUプラグインをインストールするにはどうすればよいですか?

分類Dev

Elastic Searchのdelete_by_queryはどのように機能しますか?ドキュメントの削除中に新しいデータを挿入して取得するとどうなりますか?

分類Dev

AWS Elastic Beanstalkデプロイメントのnpmスクリプトを実行するにはどうすればよいですか?

分類Dev

Elastic SearchでNestを使用して特定のプロパティにインデックスを作成するにはどうすればよいですか?

分類Dev

Elastic Beanstalkで「tmp」ディレクトリを作成するにはどうすればよいですか?

分類Dev

Elastic Searchのリストで一致する要素値のみを取得するにはどうすればよいですか?

分類Dev

Elastic Beanstalkワーカー環境-すべてのメッセージがデッドレターキューに送られる理由を理解するにはどうすればよいですか?

分類Dev

Elastic Searchで、オブジェクトの配列内の複数のオブジェクトを照合するにはどうすればよいですか?

分類Dev

Elastic Search(複数のノードを使用)とKibanaを1つのDocker構成ファイルに含めるにはどうすればよいですか?

分類Dev

更新が発生した場合、Elastic Searchで自動インデックスの再作成を停止するにはどうすればよいですか?

分類Dev

Elastic Searchで配列の配列のマッピングを作成するにはどうすればよいですか?

分類Dev

Elastic Searchのquery_stringリクエストで最終スコアの合計を取得するにはどうすればよいですか?

分類Dev

AWS Elastic Beanstalkプラットフォームフックにchmod + x権限を追加するにはどうすればよいですか?

分類Dev

Elastic BeanstalkからFlaskアプリのDockerコンテナにポートをマッピングするにはどうすればよいですか?

分類Dev

間にハイフンがある単語をトークン化しないように、Elastic Searchを停止するにはどうすればよいですか?

分類Dev

間にハイフンがある単語をトークン化しないように、Elastic Searchを停止するにはどうすればよいですか?

分類Dev

Elastic Beanstalk Tomcatに設定を提供するにはどうすればよいですか

分類Dev

ソースからelastic4s用のスタンドアロンjarファイルを作成するにはどうすればよいですか?

分類Dev

AWS Elastic Beanstalkアプリケーションにmatplotlibをインストールするにはどうすればよいですか?

Related 関連記事

  1. 1

    Elasticのスクリプトで特別なドキュメントフィールドを使用するにはどうすればよいですか?

  2. 2

    1回のAPI呼び出しで複数のドキュメントをElasticに送信するにはどうすればよいですか?

  3. 3

    Elastic Searchドキュメントで@はどういう意味ですか?

  4. 4

    Elastic Searchで文字列のリスト内を検索するにはどうすればよいですか?

  5. 5

    Elastic Searchの条件に一致するバケットの数をカウントするにはどうすればよいですか?

  6. 6

    Elastic Searchでこのクエリのようなものにフィルターを追加するにはどうすればよいですか?

  7. 7

    このアーキテクチャでElastic Searchのインデックスをコピーするにはどうすればよいですか?

  8. 8

    Elastic Searchで検索結果の順序を変更するにはどうすればよいですか?

  9. 9

    AWS EC2 / Elastic Beanstalk | ドメインごとにホワイトリストに登録するにはどうすればよいですか?

  10. 10

    Elastic Searchサーバーをインターネットに公開するにはどうすればよいですか?

  11. 11

    Elastic Search 6.1用のICUプラグインをインストールするにはどうすればよいですか?

  12. 12

    Elastic Searchのdelete_by_queryはどのように機能しますか?ドキュメントの削除中に新しいデータを挿入して取得するとどうなりますか?

  13. 13

    AWS Elastic Beanstalkデプロイメントのnpmスクリプトを実行するにはどうすればよいですか?

  14. 14

    Elastic SearchでNestを使用して特定のプロパティにインデックスを作成するにはどうすればよいですか?

  15. 15

    Elastic Beanstalkで「tmp」ディレクトリを作成するにはどうすればよいですか?

  16. 16

    Elastic Searchのリストで一致する要素値のみを取得するにはどうすればよいですか?

  17. 17

    Elastic Beanstalkワーカー環境-すべてのメッセージがデッドレターキューに送られる理由を理解するにはどうすればよいですか?

  18. 18

    Elastic Searchで、オブジェクトの配列内の複数のオブジェクトを照合するにはどうすればよいですか?

  19. 19

    Elastic Search(複数のノードを使用)とKibanaを1つのDocker構成ファイルに含めるにはどうすればよいですか?

  20. 20

    更新が発生した場合、Elastic Searchで自動インデックスの再作成を停止するにはどうすればよいですか?

  21. 21

    Elastic Searchで配列の配列のマッピングを作成するにはどうすればよいですか?

  22. 22

    Elastic Searchのquery_stringリクエストで最終スコアの合計を取得するにはどうすればよいですか?

  23. 23

    AWS Elastic Beanstalkプラットフォームフックにchmod + x権限を追加するにはどうすればよいですか?

  24. 24

    Elastic BeanstalkからFlaskアプリのDockerコンテナにポートをマッピングするにはどうすればよいですか?

  25. 25

    間にハイフンがある単語をトークン化しないように、Elastic Searchを停止するにはどうすればよいですか?

  26. 26

    間にハイフンがある単語をトークン化しないように、Elastic Searchを停止するにはどうすればよいですか?

  27. 27

    Elastic Beanstalk Tomcatに設定を提供するにはどうすればよいですか

  28. 28

    ソースからelastic4s用のスタンドアロンjarファイルを作成するにはどうすればよいですか?

  29. 29

    AWS Elastic Beanstalkアプリケーションにmatplotlibをインストールするにはどうすればよいですか?

ホットタグ

アーカイブ