ElasticSearch排序给出了fielddata错误

时间:2017-05-22 12:27:36

标签: firebase elasticsearch firebase-realtime-database elasticsearch-5

我使用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.

我觉得很奇怪,一个简单的字母排序操作会要求你使用"重要的记忆"。

我在查询中遗漏了什么吗?或者我还能做些什么才能让它发挥作用?

1 个答案:

答案 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