这是映射。
curl -XPUT 'localhost:9200/products/' -d '{
"settings" : {
"index" : {
"number_of_shards" : 6,
"number_of_replicas" : 1
}
},
"mappings" : {
"product" : {
"_all":{ "enabled": true },
"properties":{
"id" : { "type" : "string", "index" : "not_analyzed", "include_in_all": true },
"description" : { "type" : "string" },
"title" : { "type" : "string", "boost" : 2 },
}
}
}
}'
我不想收到没有说明的广告。但正如你在映射中所看到的“描述”有一个索引。 那么如何在描述中使用不查询? 请帮帮我。
我看过弹性搜索的文档,我使用了这个查询。
**query => {
filtered => {
filter => {
not => {
filter => {
term => {description => ''}
}
}
},
query => {
match => { _all => $q }
}
}
}**
但它不起作用,我认为因为描述的索引是对的吗?
答案 0 :(得分:2)
对于2.4,这将是正确的语法和查询方法:
{
"query": {
"bool": {
"must": [
{"match_all": {}}
],
"filter": {
"bool": {
"must": [
{
"exists": {
"field": "description"
}
},
{
"wildcard": {
"description": "*"
}
}
]
}
}
}
}
}
而不是filtered
您有bool
must
作为查询而filter as filter. What's inside of
必须is what you have as query and what's inside of
过滤is what you have as filter. The approach you used with
过滤`在ES中已弃用2.X。