elasticsearch,Go,elasticsearch" /> elasticsearch,Go,elasticsearch" />

Go 我可以使用Elasticsearch查看需要身份验证的数据吗(仅限登录用户)

Go 我可以使用Elasticsearch查看需要身份验证的数据吗(仅限登录用户),go,elasticsearch,Go,elasticsearch,我想在我的网站上实现搜索。用户应该能够搜索他们商店中的产品。显然,如果客户在他们的网站上搜索,返回的产品应该是他们的。我如何使用Elasticsearch实现这一点?显然,我将让我的后端执行查询,而不是前端,但是,我如何将搜索结果限制为只针对一个用户。这是否只能通过使用我自己的代码进行过滤来实现。它是否有类似于从sql中查找的内容?我是否走错了方向?如果使用PostgreSQL中的全文搜索是否会更好 我用的是围棋 致意 更新:我的用例符合要求: 用户与ID配对。他在仪表板中搜索他商店中的产品。他

我想在我的网站上实现搜索。用户应该能够搜索他们商店中的产品。显然,如果客户在他们的网站上搜索,返回的产品应该是他们的。我如何使用Elasticsearch实现这一点?显然,我将让我的后端执行查询,而不是前端,但是,我如何将搜索结果限制为只针对一个用户。这是否只能通过使用我自己的代码进行过滤来实现。它是否有类似于从sql中查找的内容?我是否走错了方向?如果使用PostgreSQL中的全文搜索是否会更好

我用的是围棋

致意

更新:我的用例符合要求:

用户与ID配对。他在仪表板中搜索他商店中的产品。他的请求通过会话令牌cookie,我在服务器上获取他的ID。然后我需要获取与他的查询匹配的产品,并且只获取他的产品


例如,在SQL中,它将是
SELECT*FROM products WHERE shop\u id=id
。是否可以使用Elasticsearch?在PostgreSQL上实现全文搜索比实现全文搜索更麻烦吗?

Iy可以使用Elasticsearch轻松实现,您应该将
shop\u id
定义为关键字字段,然后在筛选查询上下文以确保您只搜索属于特定
店铺id
的产品

在过滤器上下文中使用
shop\u id
也可以显著提高搜索性能,因为默认情况下,这些内容会缓存在Elasticsearch中,如中所述

在筛选上下文中,查询子句回答“是否这样做?” 文档匹配此查询子句吗?“答案很简单,是还是 不 — 不计算分数。过滤器上下文主要用于 过滤结构化数据,例如

状态字段是否设置为“已发布”

常用过滤器将由Elasticsearch自动缓存,以提高性能。

根据您的要求进行样本映射和查询:

索引映射

{
    "mappings" :{
        "properties" : {
            "product" : {
                "type" : "text"
            },
            "shop_id" :{
                "type" : "keyword"
            }
        }
    }
}
为2个不同店铺ID的样本文档编制索引

{
    "product" : "foo",
    "shop_id" : "stackoverflow"
}

{
    "product" : "foo",
    "shop_id" : "opster"
}
搜索店铺id为
stackoverflow的
foo
产品

{
    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "product": "foo"
                    }
                }
            ],
            "filter": [
                {
                    "term": {
                        "shop_id": "stackoverflow"
                    }
                }
            ]
        }
    }
}
搜索结果

 "hits": [
            {
                "_index": "productshop",
                "_type": "_doc",
                "_id": "2",
                "_score": 0.18232156,
                "_source": {.  --> note only foo belong to `stackoverflow` returned
                    "product": "foo",
                    "shop_id": "stackoverflow"
                }
            }
        ]

在编制索引时,可以将用户设置为源json中的字段,并可以按该字段进行查询。Elasticsearch支持文档中提到的各种类型的查询。如果您能更清楚地表达您的用例,可能会有帮助,并提供一个示例数据。您好@pkp9999,谢谢您的建议。我更新了我的OP。我希望它能帮上一点忙。@AlexTselikas,提供了答案,请仔细阅读,如果您还有其他问题,请告诉我,很乐意帮忙。嘿,谢谢你的详细回复!我会在有空的时候尝试一下,然后回复你刚刚测试过的,这正是我想要的,谢谢!