我的弹性搜索编码如下:
"query": {
"constant_score" : {
"filter" : {
"bool": {
"must": [
{
"terms": {"stkno" : ["Net Asset","asset combine"]}},
{ "range": { "CDate": { "gte": "2015-01-01" , "lte": "2017-06-03T23:59:59" } } } ]
}}}}
这是映射:
{
"news": {
"mappings": {
"bursa": {
"_timestamp": {},
"properties": {
"CDate": {
"type": "date",
"format": "epoch_millis||dateOptionalTime"
},
"RDate": {
"type": "date",
"format": "epoch_millis||dateOptionalTime"
},
"category": {
"type": "string"
},
"content": {
"type": "string"
},
"exDate": {
"type": "string"
},
"exgcode": {
"type": "string"
},
"htext": {
"type": "string"
},
"paymentDate": {
"type": "string"
},
"stat": {
"type": "string"
},
"stkno": {
"type": "string"
},
"tag": {
"type": "string"
}
}
}
}
}
}
如果我的话是:Net Asset and Asset合并,请在必须条件下使用,请提供建议 如果"资产合并"不是在弹性搜索和"新资产"在弹性搜索中,使用Must条件使所有索引都无法搜索?
怎么办我想在elasticsearch中找到这些单词? 因为它无法找到" Net Asset"当我使用时,确切的词应该是条件。
由于
答案 0 :(得分:2)
由于stkno
是analyzed
字段,而您正在应用查找完全匹配的terms
查询,因此您无法获取结果。试试这个。
"bool": {
"should": [
{
"match": {
"stkno": "Net Asset",
"operator": "and"
}
},
{
"match": {
"stkno": "asset combine",
"operator": "and"
}
}
],
"must": [
{
"range": {
"CDate": {
"gte": "2015-01-01",
"lte": "2017-06-03T23:59:59"
}
}
}
]
}
希望它有所帮助!!