gpt4 book ai didi

elasticsearch - 如何在ElasticSearch中的数组中搜索单独的键和值字段?

转载 作者:行者123 更新时间:2023-12-03 01:37:37 25 4
gpt4 key购买 nike

我的ElasticSearch文档包含一个嵌套的表单域集合。每个字段都有一个名称和一个值,并且映射如下:

form: {
properties: {
id: { type: 'integer' },
name: { type: 'text' },
form_data: {
type: 'nested',
properties: {
'name': { type: 'keyword' },
'value': { type: 'text', analyzer: 'full_text_analyzer' }
}
}
}
}

我需要允许用户搜索多个表单字段以完善他们的搜索。他们可以选择要搜索的字段,并为每个字段分配一个值。例如
applicant_name = 'Joe'
pet_type = 'dog'

这将找到所有包含一个名为 applicant_name的字段和一个名为 Joe以及一个值模糊匹配的 pet_type的字段,该字段具有与 dog模糊匹配的值。

我正在尝试执行的查询如下:
{
"query": {
"bool": {
"must": [{
"nested": {
"path": "form_data",
"query": {
"filter": {
"bool": {
"must": [
{
"bool": {
"must": [
{ "term": { "form_data.name": "applicant_name" } },
{ "match": { "form_data.value": "Joe" } }
]
}
},
{
"bool": {
"must": [
{ "term": { "form_data.name": "pet_type" } },
{ "match": { "form_data.value": "dog" } }
]
}
}
]
}
}
}
}
}]
}
}
}

但是,我得到0个结果。

最佳答案

尝试在您的初始“必须”子句中按条件使用嵌套查询:

{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "form_data",
"query": {
"bool": {
"must": [
{ "term": { "form_data.name": "applicant_name" } },
{ "match": { "form_data.value": "Joe" } }
]
}
}
}
},
{
"nested": {
"path": "form_data",
"query": {
"bool": {
"must": [
{ "term": { "form_data.name": "pet_type" } },
{ "match": { "form_data.value": "dog" } }
]
}
}
}
}
]
}
}
}

关于elasticsearch - 如何在ElasticSearch中的数组中搜索单独的键和值字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51091416/

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