我使用Firebase Flashlight查询我的Firebase数据库,但我无法对结果进行排序。
我正在使用此查询:
this.elasticConfig = {
type: 'guest',
body: {
from: 0,
size: 20,
query: {
bool: {
must: [
{
match: {
isApproved: false
}
},
{
match: {
isCheckedIn: false
}
},
{
match: {
eventId: event.id
}
}
]
}
},
sort: [
{
name: {
order: 'asc'
}
}
]
}
};
但是我从elasticsearch获得了这个错误:
Fielddata is disabled on text fields by default. Set fielddata=true on [name] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory.
我觉得很奇怪,一个简单的字母排序操作会要求你使用"重要的记忆"。
我在查询中遗漏了什么吗?或者我还能做些什么才能让它发挥作用?
答案 0 :(得分:3)
如果这是ES 5,请尝试在--master=zk://ip1:2181,ip2:2181,ip3:2181/mesos \
--log_dir=/var/log/mesos --containerizers=docker,mesos \
--executor_registration_timeout=10mins --hostname=ip1 \
--recovery_timeout=1mins \
--resources=ports:[25000-65000] \
--work_dir=/var/lib/mesos
上进行排序,并且该字段已由Elasticsearch自动映射。否则,您需要将name.keyword
字段设为name
类型,或向其添加keyword
子字段以搜索keyword
,当然,还要将子字段设为类型为name.keyword
。