首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹性搜索在URL查询和JSON发布上的不同结果

弹性搜索在URL查询和JSON发布上的不同结果
EN

Stack Overflow用户
提问于 2014-01-25 00:34:33
回答 1查看 174关注 0票数 0

我正在完成一个大型在线商店的搜索功能。

我有一个附加字段的问题。当我尝试在浏览器中搜索某些字段时,它可以工作,但是当我使用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)。

代码语言:javascript
复制
  {
        "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"
                }
            }
        }
    }
EN

回答 1

Stack Overflow用户

发布于 2014-01-26 01:52:32

使用query_string-query对文本进行分析。对于term-query (和-filter),情况并非如此。

由于您没有指定映射,因此您将获得字符串字段的standard-analyzer。它标记化、小写并删除停用词。

因此,术语Diesel将被索引为diesel。您的terms-filter正在查找精确的术语Diesel,这是不同的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21337745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档