【发布时间】:2014-01-24 16:34:32
【问题描述】:
我正在完成一个大型在线网上商店的搜索功能。
我对附加字段有疑问。当我尝试在浏览器中搜索某些字段时,它可以工作,但是当使用 bool 过滤器发布 JSON 时,它给了我 0 个结果(不会引发错误)。
基本上:当我访问 localhost:9200/search/items/_search?pretty=true&q=field-7:Diesel 它运行良好,但在 JSON 中却不行。
我整天在谷歌上搜索,在 ElasticSeach 文档中找不到任何帮助。更让我沮丧的是 bool 查询中的其他一些字段可以正常工作,但这个不行。
我没有任何映射,并且 ES 开箱即用地为我工作 - 对“名称”字段以及任何其他字段以及该字段的查询效果很好 - 但仅限于浏览器内部。
我意识到通过浏览器查询 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"
}
}
}
}
【问题讨论】:
标签: php elasticsearch