我有一个带有chunks
字段keyword
的索引,它只是一个关键字列表。当我搜索我做的事情
{
"query": {
"bool": {
"filter": [
{
"term": {
"chunks": "chunk1"
}
},
{
"term": {
"chunks": "chunk2"
}
}
]
}
}
}
所以我可以检索所有同时存在" chunk1"和" chunk2"在大块的领域内。但是,如果我关心订单怎么办?我的解决方案也有像
这样的脚本String[] chunks = doc['chunks'];
int c = 0;
String chunk = params.chunks[0];
for (int i = 0; i < chunks.length; ++i) {
if (chunk == chunks[i]) {
if (++c == params.chunks.length) {
return true;
}
chunk = params.chunks[c];
}
}
return false;
其中params.chunks类似于["chunk1", "chunk2"]
。问题是来自doc['chunks']
上下文的params._source
is unordered,_search
isn't allowed。
应该可能以某种方式,因为Elastic本身具有类似的多文本搜索功能,所以我可以模拟相同的字段结构。