首页 > 解决方案 > 如何在elasticsearch java api中查询特定映射?

问题描述

我有这样的索引定义

    {
      "mappings": {
        "my_mapping1": {
          "dynamic": false,
          "_all":       { "enabled": false },
          "_source":    { "enabled": false },
          "properties": {
              "my_property1":      { "type": "long", "store": true },
          }
        },
        "my_mapping2": {


    query = QueryBuilders.matchQuery("my_property1", "123123");


    Set<String> queryIndices = new HashSet<>();
    queryIndices.add("my_index_name");

    SearchResponse searchResponse = searchBuilder(SearchType.DFS_QUERY_THEN_FETCH, query, fields,
            queryIndices.toArray(new String[queryIndices.size()]), params.getType())
            .setSize(size)
            .execute().actionGet();

如何指定我正在搜索my_mapping1而不是my_mapping2

并跟进问题,我应该用长对象查询 matchQuery 的类型而不是字符串吗?

标签: javaelasticsearch

解决方案


通过查看您的源代码,您似乎没有使用从 6.0 开始提供的官方java 高级休息客户端(JHLRC)

请参阅使用 JHLRC 的官方搜索请求 API,其中在可选参数部分下解释了如何传递类型名称,在您的情况下my_mapping1my_mapping2.

SearchRequest searchRequest = new SearchRequest("posts"); 
searchRequest.types("doc"); // here you need to pass your type name.

推荐阅读