gpt4 book ai didi

node.js - ElasticSearch-多次匹配查询,即使数据在那里也没有返回命中值-NodeJS

转载 作者:行者123 更新时间:2023-12-02 23:09:16 29 4
gpt4 key购买 nike

我正在尝试获取具有该字段的项目列表:resellable: true

这是我可以访问的数据集:my-domain.com/_all/listings/_search

{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 4,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "collectibles",
"_type" : "listing",
"_id" : "SseZfNbpdpBxc3O",
"_score" : 1.0,
"_source" : {
"data" : {
"resellable" : true,
"active" : true,
"description" : "<p>1234 123 123 123</p>",
"title" : "2134",
"has_store" : true,
"createdAt" : "Wed May 27 2020 04:23:18 GMT+0000 (Coordinated Universal Time)",
"apiURL" : "kJ9zsIsdQG8TZrRfPco4",
"id" : "SseZfNbpdpBxc3O",
"state" : "PENDING",
"amount" : "21",
}
}
}
}

我的查询使用 *NodeJS and ElasticSearch.js*
let results = await client.search({
index: params.category,
type: "listing",
body: {
query: {
multi_match: {
query: true,
fields: ['resellable', 'active'],
type: 'best_fields',
}
}
}
})

响应始终为 no hits。我尝试了 match,我没有尝试过 best_fields,但它似乎与值不匹配。

我在这里做错了什么?您还需要执行其他操作来查询 _source.data级别的项目吗?
ElasticSearch version: 7.4

最佳答案

使用multi_match时,您正在以字符串格式使用"true",而您以 bool(boolean) 格式true为数据建立索引,这就是您未获得任何点击的原因。

我只是注意到您的multi_match字段(resellableactive)都是 bool(boolean) 值,那么为什么要使用multi_match查询,您应该改用boolean filter query,它也要缓存并提供更好的性能。

从文档

Filter子句在过滤器上下文中执行,这意味着计分被忽略,并且考虑将子句用于缓存。

样本索引映射

{
"mappings": {
"properties": {
"active": {
"type": "boolean"
},
"resellable" :{
"type" : "boolean"
}
}
}
}

索引各种示例文档
{
"active" : true,
"resellable" : true
}

{
"active" : true,
"resellable" : false
}

{
"active" : false,
"resellable" : false
}

{
"active" : false,
"resellable" : true
}

搜索查询以获取两个值都为真的文档
{
"query": {
"bool": {
"filter": [
{
"match": {
"active": true
}
},
{
"match": {
"resellable": true
}
}
]
}
}
}

结果
 "hits": [
{
"_index": "filterbool",
"_type": "_doc",
"_id": "1",
"_score": 0.0,
"_source": {
"active": true,
"resellable": true
}
}
]

关于node.js - ElasticSearch-多次匹配查询,即使数据在那里也没有返回命中值-NodeJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62081473/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com