Mat*_*nty 2 arrays filter elasticsearch
我是第一次看Elasticsearch,花了大约一天的时间来看待它.我们已经广泛使用Lucene并且想要开始使用ES.我正在寻找我们目前拥有的替代数据结构.
如果我运行*match_all*查询,这就是我现在得到的.我很满意这个结构.
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 22,
"max_score": 1,
"hits": [
{
"_index": "integration-test-static",
"_type": "sport",
"_id": "4d38e07b-f3d3-4af2-9221-60450b18264a",
"_score": 1,
"_source": {
"Descriptions": [
{
"FeedSource": "dde58b3b-145b-4864-9f7c-43c64c2fe815",
"Value": "Football"
},
{
"FeedSource": "e4b9ad44-00d7-4216-adf5-3a37eafc4c93",
"Value": "Football"
}
],
"Synonyms": [
"Football"
]
}
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚的是如何编写查询以通过搜索同义词"Football"来撤回此文档.看起来应该很容易!
读完这篇文章后我得到了这个方法:http://gibrown.wordpress.com/2013/01/24/elasticsearch-five-things-i-was-doing-wrong/ 他提到在数组中存储多个字段.我意识到我的例子没有多个字段,但我们肯定会寻找一个可以满足它们的解决方案.
尝试了各种不同的查询与过滤器,bool的东西,术语这个和术语,没有回报.
你的搜索和映射是什么样的?
如果让Elasticsearch生成映射,它将使用标准分析器来降低文本(并删除停用词).
因此,Football实际上将被编入索引football.该term查询-家庭/过滤器不会做文本分析,所以term:Football会寻找Football,未编入索引.该match查询-家庭做.
这是一个非常常见的问题,在我的关于针对初学者的Elasticsearch搜索疑难解答的文章中有相当广泛的介绍,值得浏览.文本分析是使用搜索的一个非常重要的部分,因此还有更多关于它的文章.