我想使用URI搜索(q =)在ElasticSearch中执行AND操作。我该怎么做?如何在URI中搜索多个字段搜索
如果我有以下文档: [{“name”:“Test 1”,“pub”:“2”},{“name”:“Test 2”,“pub”:“1”}, {“name”:“A”,“pub”:“1”}]
我想查询包含名称包含“测试”和其中酒吧等于“1”的文档。我怎么做?
谢谢!
我想使用URI搜索(q =)在ElasticSearch中执行AND操作。我该怎么做?如何在URI中搜索多个字段搜索
如果我有以下文档: [{“name”:“Test 1”,“pub”:“2”},{“name”:“Test 2”,“pub”:“1”}, {“name”:“A”,“pub”:“1”}]
我想查询包含名称包含“测试”和其中酒吧等于“1”的文档。我怎么做?
谢谢!
假设你的文件看起来是这样的:
{
"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
}
}
]
}
}
}
}
}
所以,如果我改变,所以使用嵌套类型,而不是...我会然后能够做一个查询字符串,如:_search?q = this:100 and that:> 100 这个和那个领域? 因为我认为Elaticsearch可以在任何字段组合上完全搜索,所以doc.myList.this.item:Who AND doc.userData.that.name:Test –
查询字符串查询支持所有类型的查询...除了父/子文档和嵌套字段(请参阅[公开问题](https://github.com/elastic/elasticsearch/issues/16551)) – Val
啊哈,好的,这就是为什么。谢谢 –
其实你需要嵌套的字段。以下是一个很好的资源。
https://www.elastic.co/guide/en/elasticsearch/guide/current/nested-objects.html
你的映射是怎样的?正如下面的“答案”所暗示的那样,你的字段需要嵌套,你将无法使用'q = ...'查询它,你需要一个完整的''嵌套'查询。 – Val
因此,为了能够将GET的JSOB正文发送到_search,查询DSL? –
看到我的答案 – Val