我已经在 map 中创建了索引和一些数据,并通过低级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")
为什么我得到对象类型未知异常?虽然我已经添加了...
最佳答案
正如@cfrick所评论的那样,当前仅支持域映射。所以我已经通过低级api调用处理了它
关于grails - 通过低级索引时,elasticSearchService的映射/类型丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30859863/