【问题标题】:Elastic search High Level Client Equivalent for Fields Query用于字段查询的弹性搜索高级客户端等效项
【发布时间】:2020-04-12 14:26:18
【问题描述】:

我有一个弹性搜索查询,如下所示。 我想将此查询写入 JAVA 高级客户端。

{"query":{"query_string":{"query":"*123*","fields":["address"]}}}

有人可以帮忙吗?我无法在高级客户端中找到等效的字段。

【问题讨论】:

    标签: java elasticsearch elasticsearch-5


    【解决方案1】:

    这个怎么样:

    import org.apache.http.HttpHost;
    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.index.query.QueryBuilders;
    import org.elasticsearch.search.builder.SearchSourceBuilder;
    
    public class Main {
    
        public static void main(String[] args) throws Exception {
            // Create RestHighClient
            RestHighLevelClient client = new RestHighLevelClient(
                    RestClient.builder(
                            new HttpHost("localhost", 9200, "http")
                    )
            );
    
            // Create search query using builder
            SearchSourceBuilder builder = new SearchSourceBuilder();
            builder.query(QueryBuilders
                    .queryStringQuery("*123*")
                    .field("address"));
    
            // Create SearchRequest
            SearchRequest request = new SearchRequest();
            request.source(builder);
    
            // Request
            SearchResponse response = client.search(request, RequestOptions.DEFAULT);
            System.out.println(response);
    
            client.close();
        }
    }
    


    结果:

    {
      "took": 12,
      "timed_out": false,
      "_shards": {
        "total": 4,
        "successful": 4,
        "skipped": 0,
        "failed": 0
      },
      "hits": {
        "total": {
          "value": 1,
          "relation": "eq"
        },
        "max_score": 1.0,
        "hits": [
          {
            "_index": "test-191220",
            "_type": "_doc",
            "_id": "4dxQIW8BbItIJo_OTPzv",
            "_score": 1.0,
            "_source": {
              "address": "123-456, City, Country",
              "phone": "123-456-789",
              "name": "John Doe"
            }
          }
        ]
      }
    }
    


    您的问题的示例数据如下:

    POST test-191220/_doc
    {
      "address": "123-456, City, Country",
      "phone": "123-456-789",
      "name": "John Doe"
    }
    
    POST test-191220/_search
    {
      "query": {
        "query_string": {
          "query": "*123*",
          "fields": ["address"]
        }
      }
    }
    


    您可以查看以下链接以获取更多信息:

    【讨论】:

      猜你喜欢
      • 2016-03-27
      • 2019-07-13
      • 1970-01-01
      • 2018-11-03
      • 1970-01-01
      • 2019-08-19
      • 2019-08-25
      • 2017-10-15
      • 2020-07-27
      相关资源
      最近更新 更多