在Elasticsearch中搜索通过摄取附件索引的文档

时间:2019-02-12 06:34:13

标签: elasticsearch

在基于属性的弹性搜索中搜索通过附件附加索引的文档。

我是弹性搜索的新手,希望为具有某些属性(例如作者,标题,主题,类别,社区等)的文件建立索引。

我到达了多远:-

i能够创建一个附件管道,并且能够使用属性来摄取弹性文档中的不同文档。看看下面我是怎么做的:-

1)通过以下请求创建管道:-

{  
"description":"Extract attachment information",
"processors":[  
  {  
     "attachment":{  
        "field":"data"
     }
  }
]
}

2)通过以下代码上传附件:-

{
"filename":"Presentations-Tips.ppt",
"Author":"Jaspreet",
"Category":"uploading ppt",
"Subject":"testing ppt",
"fileUrl":"",
"attributes": 
{"attr11":"attr11value","attr22":"attr22value","attr33":"attr33value"},
"data": "here_base64_string_of_file"
}

3)然后可以自由搜索上述所有属性以及文件内容:-

 {
 "query":{
 "query_string":{
    "query":"*test*"
 }
 }
 }

现在我想要的是:- 想要通过一些过滤器来缩小搜索范围:-

  1. 希望像在特定参数上一样进行搜索,例如搜索所有作者必须“ Rohan”的人
  2. 然后搜索所有作者必须为“ Rohan”且类别必须为“ Education”的人
  3. 然后搜索所有作者带有“ han”之类的字母并且类别带有“ Tech”之类的字母
  4. 搜索所有作者为“ Rohan”的人,并且可以在任何字段中具有“ progress”的所有字段中搜索全文搜索,这意味着首先缩小搜索范围,然后再对那些结果集字段进行全文搜索。

请使用正确的查询语法为我提供帮助,并致电url,就像上面的全文搜索一样,我使用了'GET / my_index / _search'

1 个答案:

答案 0 :(得分:0)

花了一些时间终于得到了答案:-

curl -X POST \
  http://localhost:9200/my_index/_search \
  -H 'Content-Type: application/json' \
  -d '{
    "query": {
        "bool": {
            "must": [
                {
                    "query_string": {
                        "query": "progress"
                    }
                },
                {
                    "wildcard": {
                        "Author": "Rohan"
                    }
                },
                {
                    "wildcard": {
                        "Title": "q*"
                    }
                }
            ]
        }
    }
}'

现在在上面,您可以根据需要删除或添加must数组中的任何对象。