我想在bool中同时包含“必须”和“应该”两者,但没有得到理想的结果。
对于以下查询,我分别拥有3个文档和1个文档。
updated_dict = {k:v for k,v in wordFreqDic.items() if v != "blonde"}
要在一个查询中获取所有文档,我已像下面这样编写,但仍然仅获取了3个文档。
{
"timeout":"5s",
"query":{
"bool":{
"must":[
{"term":{"rgtnRelt.reltRcptIdI":{"value":"9175","boost":1.0}}},
{"term":{"rgtnRelt.reltRcptIdI":{"value":"9844","boost":1.0}}},
{"term":{"rgtnRelt.reltRcptIdI":{"value":"0075","boost":1.0}}},
{"term":{"rgtnRelt.reltRcptIdI":{"value":"7678","boost":1.0}}}
],
"adjust_pure_negative":true,"boost":1.0
}
}
}
{
"timeout":"5s",
"query":{
"bool":{
"must":[
{"term":{"_id":{"value":"9175-9844-0075-7678","boost":1.0}}}
],
"adjust_pure_negative":true,"boost":1.0
}
}
}
我只想使用单个查询获取所有文档
答案 0 :(得分:0)
尝试像这样:
{
"timeout": "5s",
"query": {
"bool": {
"minimum_should_match": 1,
"should": [
{
"terms": {
"rgtnRelt.reltRcptIdI": [
"9175",
"9844",
"0075",
"7678"
]
}
},
{
"term": {
"_id": {
"value": "9175-9844-0075-7678"
}
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
}
}
或者这样:
{
"timeout": "5s",
"query": {
"bool": {
"minimum_should_match": 1,
"should": [
{
"bool": {
"must": [
{
"term": {
"rgtnRelt.reltRcptIdI": {
"value": "9175",
"boost": 1
}
}
},
{
"term": {
"rgtnRelt.reltRcptIdI": {
"value": "9844",
"boost": 1
}
}
},
{
"term": {
"rgtnRelt.reltRcptIdI": {
"value": "0075",
"boost": 1
}
}
},
{
"term": {
"rgtnRelt.reltRcptIdI": {
"value": "7678",
"boost": 1
}
}
}
]
}
},
{
"term": {
"_id": {
"value": "9175-9844-0075-7678"
}
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
}
}
答案 1 :(得分:0)
以下为我工作
{
"query":{
"bool":{"should":[
{"match_phrase":{"rgtnRelt.reltRcptIdI":"9175-9844-0075-7678"}},
{"match":{"_id":"9175-9844-0075-7678"}}]
} }
}