Elasticsearch:按顺序搜索数组

时间:2018-03-20 17:07:50

标签: elasticsearch

我有一个带有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本身具有类似的多文本搜索功能,所以我可以模拟相同的字段结构。

0 个答案:

没有答案