如何使用 elasticsearch python API 正确构建查询?
How do I properly construct a query using the elasticsearch python API?
我有一些代码看起来像这样
from elasticsearch import Elasticsearch
client = Elasticsearch(hosts = [myhost])
try:
results = es_client.search(
body = {
'query' : {
'bool' : {
'must' : {
'term' : {
'foo' : 'bar',
'hello' : 'world'
}
}
}
}
},
index = 'index_A,index_B',
size = 10,
from_ = 0
)
except Exception as e:
## my code stops here, as there is an exception
import pdb
pdb.set_trace()
检查异常
SearchPhaseExecutionException[Failed to execute phase [query], all shards failed;
再往下
Parse Failure [Failed to parse source [{"query": {"bool": {"must": {"term": {"foo": "bar", "hello": "world"}}}}}]]]; nested: QueryParsingException[[index_A] [bool] query does not support [must]];
堆栈跟踪很大,所以我只抓取了它的片段,但主要错误似乎是 "must" 不受支持,至少我构建查询的方式是这样。
我可以 post 更完整的堆栈跟踪,但我希望有人能够看到我在 "search" 中的 "body" 参数中犯的一个非常明显的错误方法。
任何人都可以看出我在为 python API 构建查询正文时明显做错了什么吗?
我觉得查询的语法不正确。试试这个:
results = es_client.search(
body = {
"query": {
"bool": {
"must": [
{
"term": {
"foo": {
"value": "bar"
}
}
},
{
"term": {
"hello": {
"value": "world"
}
}
}
]
}
}
},
index = 'index_A,index_B',
size = 10,
from_ = 0
)
我有一些代码看起来像这样
from elasticsearch import Elasticsearch
client = Elasticsearch(hosts = [myhost])
try:
results = es_client.search(
body = {
'query' : {
'bool' : {
'must' : {
'term' : {
'foo' : 'bar',
'hello' : 'world'
}
}
}
}
},
index = 'index_A,index_B',
size = 10,
from_ = 0
)
except Exception as e:
## my code stops here, as there is an exception
import pdb
pdb.set_trace()
检查异常
SearchPhaseExecutionException[Failed to execute phase [query], all shards failed;
再往下
Parse Failure [Failed to parse source [{"query": {"bool": {"must": {"term": {"foo": "bar", "hello": "world"}}}}}]]]; nested: QueryParsingException[[index_A] [bool] query does not support [must]];
堆栈跟踪很大,所以我只抓取了它的片段,但主要错误似乎是 "must" 不受支持,至少我构建查询的方式是这样。
我可以 post 更完整的堆栈跟踪,但我希望有人能够看到我在 "search" 中的 "body" 参数中犯的一个非常明显的错误方法。
任何人都可以看出我在为 python API 构建查询正文时明显做错了什么吗?
我觉得查询的语法不正确。试试这个:
results = es_client.search(
body = {
"query": {
"bool": {
"must": [
{
"term": {
"foo": {
"value": "bar"
}
}
},
{
"term": {
"hello": {
"value": "world"
}
}
}
]
}
}
},
index = 'index_A,index_B',
size = 10,
from_ = 0
)