弹性搜索未显示字段

时间:2015-09-12 06:03:43

标签: python elasticsearch field

我是弹性搜索的新手。我正在尝试用Python实现我的一个大学项目。我想使用弹性搜索作为简历索引器。一切都工作正常,除了它显示_source field中的所有字段。我不想要一些字段,我尝试了太多东西,但没有任何工作。以下是我的代码

es = Elastcisearch()
  query = {
"_source":{
    "exclude":["resume_content"]
            },
        "query":{
            "match":{
                "resume_content":{
                    "query":keyword,
                    "fuzziness":"Auto",
                    "operator":"and",
                    "store":"false"
                        }
                    }
                }
            }

    res = es.search(size=es_conf["MAX_SEARCH_RESULTS_LIMIT"],index=es_conf["ELASTIC_INDEX_NAME"], body=query)

返回res

其中es_conf是我的本地词典。

除上述代码外,我还尝试了_source:false_source:[name of my fields]fields:[name of my fields]。我还在搜索方法中尝试了store=False。有任何想法吗?

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用fields

这是一个简单的例子。我设置了一个包含三个字段的映射,(富有想象力地)命名为"field1""field2""field3"

PUT /test_index
{
   "mappings": {
      "doc": {
         "properties": {
            "field1": {
               "type": "string"
            },
            "field2": {
               "type": "string"
            },
            "field3": {
               "type": "string"
            }
         }
      }
   }
}

然后我索引了三个文件:

POST /test_index/doc/_bulk
{"index":{"_id":1}}
{"field1":"text11","field2":"text12","field3":"text13"}
{"index":{"_id":2}}
{"field1":"text21","field2":"text22","field3":"text23"}
{"index":{"_id":3}}
{"field1":"text31","field2":"text32","field3":"text33"}

让我们说我想在字段"text22"中找到包含"field2"的文档,但我只想返回"field1"和" {的内容{1}}&#34 ;.这是查询:

field2

返回:

POST /test_index/doc/_search
{
    "fields": [
       "field1", "field2"
    ], 
    "query": {
        "match": {
           "field2": "text22"
        }
    }
}

以下是我使用的代码:http://sense.qbox.io/gist/69dabcf9f6e14fb1961ec9f761645c92aa8e528b

使用Python适配器设置它应该很简单。