6

私はelasticsearchの上にWebアプリを構築しました。Javaを使用して複数のフィルターを実行したいと思います。

エラスティックサーチ クエリ:

{
  "query": {
    "bool": {
      "must": [
        {"match": {
          "T": "TEXT"},
          "match": {
            "new_content": "TEXT"
          }
        },

      ],
      "filter": {
        "term": {
          "collection1": "xyz"
        },
        "term": {
          "collection2": "abc"
        }

collection2 つの異なる値 (たとえば、"xyz" と "abc") を持つ同じフィールドをフィルター処理するようにクエリをフィルター処理したい

現在、単一フィルター用の Java プログラムをコーディングしています。

BoolQueryBuilder boolQuery = QueryBuilders.boolQuery()
                .must(QueryBuilders.simpleQueryStringQuery(query).field("newContent").field("T"))
                .filter(QueryBuilders.termQuery(Collection1, "abc"));

複数の値の同じフィールドでクエリをフィルター処理するにはどうすればよいですか?

編集

実際に私の Web アプリでは、コレクションの値を次のように抽出しました。

String[] Collection=request.getParameterValues("site");

コレクションは私のelasticsearchドキュメントのフィールドです。germany_collection Collection[0](value:true)Collection[1]が usa_collection(value:true) であるとします。germany_collection:true および usa_collection:true の場合に結果が得られるように、ドキュメントをフィルター処理するクエリを作成したいと考えています。

これは私のオリジナルのプログラムです:

public StringBuffer getJson(String query, String start, String [] Collection{
Client client = TransportClient.builder().build()
                .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));

        BoolQueryBuilder boolQuery = QueryBuilders.boolQuery()
                .must(QueryBuilders.simpleQueryStringQuery(query).field("newContent").field("T"))
                .filter(QueryBuilders.termQuery(Collection[0], "true").filter(QueryBuilders.termQuery(Collection[1], "true");

しかし、このフィルターを適用すると、このエラーが発生しますThe method filter(TermsQueryBuilder) is undefined for the type TermsQueryBuilder。メソッドレシーバーにキャストを追加すると書かれています。

4

2 に答える 2