我是弹性搜索的新手。我正在尝试用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
。有任何想法吗?
答案 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适配器设置它应该很简单。