当通过低级索引时,缺少elasticSearchService的映射/类型

时间:2015-06-16 06:01:26

标签: grails elasticsearch elasticsearch-plugin

我在地图中创建了索引和一些数据,并通过低级API使用elasticsearch-grails-plugin https://grails.org/plugin/elasticsearch分配了一个类型,但是当我尝试使用elasticSearchService.search()执行搜索时在params中按包/类型指定,我得到一个异常,即对象类型不是未知的:

java.lang.IllegalArgumentException: Unknown object type: mypackagetype1
at org.grails.plugins.elasticsearch.ElasticSearchService$$EPFkEyq8.resolveIndicesAndTypes(ElasticSearchService.groovy:545)
at org.grails.plugins.elasticsearch.ElasticSearchService$$EPFkEyq8.search(ElasticSearchService.groovy:438)
at org.grails.plugins.elasticsearch.ElasticSearchService$$EPFkEyq8.search(ElasticSearchService.groovy:64)

以下是我添加索引和数据的方法。

def somemypackagetype1data = [name:'Alan', city:'Newyork']
elasticSearchHelper.withElasticSearch { Client client ->
def response = client.prepareIndex("myindex", "mypackagetype1")
                    .setSource(somemypackagetype1data)
                    .execute()
                    .actionGet()
}

以下是执行搜索的方式,这会引发上述问题:

elasticSearchService.search([types:'mypackagetype1'],
            {
                query_string(fields: ["name"],
                        query: searchQuery)
            }, null)

但是当我尝试通过elasticSearchContextHolder.mapping获取映射时,它不会返回任何内容。有趣的是,当我使用elasticSearchAdminService检查映射是否存在时,它会返回正数。

elasticSearchAdminService.mappingExists("myindex", "mypackagetype1")

为什么我得到对象类型未知异常?虽然我已经添加了它......

1 个答案:

答案 0 :(得分:0)

正如@cfrick评论的那样,目前仅支持域映射。所以我通过低级api调用处理它