gpt4 book ai didi

elasticsearch - 多个query_string(嵌套且未嵌套)

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

我有以下索引:

{
"thread":{
"properties":{
"members":{
"type":"nested",
"properties":{
"memberId":{
"type":"keyword"
},
"firstName":{
"type":"keyword",
"copy_to":[
"members.fullName"
]
},
"fullName":{
"type":"text"
},
"lastName":{
"type":"keyword",
"copy_to":[
"members.fullName"
]
}
}
},
"name":{
"type":"text"
}
}
}
}

我想实现一个搜索,查找与用户名或线程名匹配的所有线程,只要用户ID匹配即可。

我当前的查询如下所示:
{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "members",
"score_mode": "none",
"query": {
"bool": {
"filter": [
{ "match": { "members.id": "123456789" } }
]
}
}
}
},
{
"nested": {
"path": "members",
"query": {
"bool": {
"must": {
"simple_query_string": {
"query": "Rhymen",
"fields": ["members.fullName"]
}
}
}
}
}
}
]
}
}
}

我可以在一个查询中过滤成员和线程名称,还是必须合并两个单独的查询?我尝试添加带有“minimum_should_match:1”的“应该”,以便可以添加第二个未嵌套的“query_string”。但这并没有达到预期的效果(分数被搞砸了)。

最佳答案

是的,我认为这应该可行。

您必须在两个过滤器中都关注过滤器memberId。嵌套过滤器将需要它来使用户与memberId和name匹配。

{
"query": {
"bool": {
"must": [{
"nested": {
"path": "members",
"query": {
"term": {
"members.memberId": {
"value": 1
}
}
}
}
},
{
"bool": {
"should": [{
"term": {
"name": {
"value": "thread_name"
}
}
},
{
"nested": {
"path": "members",
"query": {
"bool": {
"should": [{
"term": {
"members.fullName": {
"value": "trump"
}
}
},
{
"term": {
"members.memberId": {
"value": 1
}
}
}
]
}
}
}
}
]
}
}
]
}
}
}

关于elasticsearch - 多个query_string(嵌套且未嵌套),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44237523/

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