我在地图中创建了索引和一些数据,并通过低级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")
为什么我得到对象类型未知异常?虽然我已经添加了它......
答案 0 :(得分:0)
正如@cfrick评论的那样,目前仅支持域映射。所以我通过低级api调用处理它