如:索引中有两个 id跟 goodsCode;现在需要把id等于goodsCode的数据筛选出来;可以利用 script来实现。
POST xxx_goods_info/_search
{
"query": {
"bool": {
"must": [{
"script": {
"script": {
"source": "return doc['id']!=doc['goodsCode']"
}
}
}]
}
}
}
执行完发现有异常:
Fielddata is disabled on text fields by default. Set fielddata=true on [id] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead.
默认情况下在text类型字段中禁用 Fielddata,id字段是text类型。
处理方案:
doc['id']改成doc['id.keyword']
POST luck_goods_info/_search?_source_includes=id,goodsCode,brand,goodsName
{
"query": {
"bool": {
"must": [{
"script": {
"script": {
"source": "return doc['id.keyword']!=doc['goodsCode']"
}
}
}]
}
}
}