我想使用URI搜索(q =)在ElasticSearch中执行AND操作。我该怎么做?
如果我有以下文件: [{“name”:“Test 1”,“pub”:“2”},{“name”:“Test 2”,“pub”:“1”},{“name”:“A”,“pub” “:” 1" }]
我想查询包含名称包含“Test”的文档,其中pub等于“1”。我该怎么做?
谢谢!
答案 0 :(得分:0)
实际上你需要嵌套字段。以下是一个很好的资源。
https://www.elastic.co/guide/en/elasticsearch/guide/current/nested-objects.html
答案 1 :(得分:0)
假设您的文档如下所示:
{
"my_field": [
{ "name":"Test 1", "pub":"2"},
{ "name":"Test 2", "pub":"1"},
{ "name":"A", "pub":"1"}
]
}
my_field
的映射类型为nested
,类似于:
{
"mappings": {
"doc_type": {
"properties": {
"my_field": {
"type": "nested",
"properties": {
"name": { "type": "string" },
"pub": {"type": "integer" }
}
}
}
}
}
}
然后,您可以查询索引并使用以下nested
查询获取预期文档:
POST /_search
{
"query": {
"nested": {
"path": "my_field",
"query": {
"bool": {
"filter": [
{
"match": {
"name": "Test"
}
},
{
"match": {
"pub": 1
}
}
]
}
}
}
}
}