我正在完成一个大型在线商店的搜索功能。
我有一个附加字段的问题。当我尝试在浏览器中搜索某些字段时,它可以工作,但是当我使用bool filter发布一个JSON时,它给我0个结果(不会引发错误)。
基本上:当我访问localhost:9200/search/items/_search?pretty=true&q=field-7:Diesel时,它工作得很好,但在JSON中却不是这样。
我用谷歌搜索了一整天,在ElasticSeach文档中找不到任何帮助。更让我沮丧的是,bool查询中的其他一些字段可以正常工作,但这个字段不行。
我没有任何映射,ES对我来说是开箱即用的--在"name“字段上的查询工作得很好,就像对其他任何字段一样,对这个字段也一样--但只有在浏览器内部。
我意识到在浏览器上查询ES使用的是所谓的“查询字符串查询”。
无论如何,这是我在ElasticSearch上发布的一个示例JSON。(搜索名称中包含"golf mk5“、柴油类型的所有项目-通过搜索字段-7)。
{
"query": {
"filtered": {
"filter": {
"bool": {
"must_not": [
{
"term": {
"sold": "1"
}
},
{
"term": {
"user_id": "0"
}
}
],
"must": [
{
"term": {
"locked": "0"
}
},
{
"term": {
"removed": "0"
}
},
{
"terms": {
"field-7": [
"Diesel"
]
}
}
]
}
},
"query": {
"match": {
"name": {
"operator": "and",
"query": "+golf +Mk5"
}
}
}
}
},
"sort": [
{
"ordering": {
"price": "desc"
}
}
],
"from": 0,
"size": 24,
"facets": {
"category_count": {
"terms": {
"field": "category_id",
"size": 20,
"order": "count"
}
},
"price": {
"statistical": {
"field": "price"
}
}
}
}发布于 2014-01-26 01:52:32
使用query_string-query对文本进行分析。对于term-query (和-filter),情况并非如此。
由于您没有指定映射,因此您将获得字符串字段的standard-analyzer。它标记化、小写并删除停用词。
因此,术语Diesel将被索引为diesel。您的terms-filter正在查找精确的术语Diesel,这是不同的。
https://stackoverflow.com/questions/21337745
复制相似问题